zoukankan      html  css  js  c++  java
  • 图片缩略图 简单应用

    package com.utils.file;
    
    import java.awt.Container;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.MediaTracker;
    import java.awt.RenderingHints;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.sql.Timestamp;
    import java.util.Date;
    import java.util.UUID;
    import javax.imageio.ImageIO;import wfc.service.database.BlobHelper;
    import...Condition;
    import...Conditions;
    import...SQL;
    
    public class imageThumbnail {
    
    private static void createThumbnail(String filename, int thumbWidth, int thumbHeight, String outFilename)throws Exception{
              //根据地址载入图片
              Image image = Toolkit.getDefaultToolkit().getImage(filename);
              MediaTracker mediaTracker = new MediaTracker(new Container());
              mediaTracker.addImage(image, 0);
              mediaTracker.waitForID(0);
              
              double thumbRatio = (double)thumbWidth / (double)thumbHeight;
              int imageWidth = image.getWidth(null);
              int imageHeight = image.getHeight(null);
              double imageRatio = (double)imageWidth / (double)imageHeight;
              if (thumbRatio < imageRatio) {
              thumbHeight = (int)(thumbWidth / imageRatio);
              } else {
              thumbWidth = (int)(thumbHeight * imageRatio);
              }
              
              BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
              Graphics2D graphics2D = thumbImage.createGraphics();
              graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
              graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
              File fileThumbnail = new File(outFilename);  
              ImageIO.write(thumbImage, "jpg", fileThumbnail);
    
              
              //获取缩略图做其他业务用--放在别处
              BufferedInputStream in = new BufferedInputStream(new FileInputStream(outFilename));  
                File file = new File("C:\Users\Desktop\jjjj.jpg");  
                if (file != null) {  
                    file.createNewFile();  
                }  
                // 指定要写入文件的缓冲输出字节流  
                BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));  
                byte[] bb = new byte[1024];// 用来存储每次读取到的字节数组  
                int n;// 每次读取到的字节数组的长度  
                while ((n = in.read(bb)) != -1) {  
                    out.write(bb, 0, n);// 写入到输出流  
                }  
                out.close();// 关闭流  
                in.close();  
                fileThumbnail.delete();//删除缩略图
              
                
                  //或把缩略图入库
                byte [] filebyte = FileLoadUtil.File2byte(fileThumbnail);
                Timestamp  saveTime=new Timestamp(new Date().getTime());
                  String uuid = UUID.randomUUID().toString();
                String fjId = "202004"+UUID.randomUUID().toString();
                String sql = "insert into DAN_FJ(FJ_ID,ST_APP_ID,TIME) values (?,?,?)";
                Object[] objects = new Object[] {uuid,fjId,saveTime};
                SQL.execute(sql,objects);
                Conditions conds = Conditions.newOrConditions();
                conds.add(new Condition("FJ_ID", Condition.OT_EQUAL, uuid));
                BlobHelper.setBlob("DAN_FJ", "APPLY_FJ", conds.toString(),filebyte, conds.getObjectArray());
                fileThumbnail.delete();//删除缩略图
      }
        
        public static void main(String[] args) throws Exception {
            //原地址,缩略图高,宽,输出地址和缩略图名
            createThumbnail("C:\Users\Desktop\jj.jpg",100,75,"C:\Users\Desktop\jjj.jpg");
        }
        
    }
    /**
             * 将文件转换成byte数组
             * @param filePath
             * @return
             */
            public static byte[] File2byte(File tradeFile){
                byte[] buffer = null;
                try
                {
                    FileInputStream fis = new FileInputStream(tradeFile);
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    byte[] b = new byte[10240];
                    int n;
                    while ((n = fis.read(b)) != -1)
                    {
                        bos.write(b, 0, n);
                    }
                    fis.close();
                    bos.close();
                    buffer = bos.toByteArray();
                }catch (FileNotFoundException e){
                    e.printStackTrace();
                }catch (IOException e){
                    e.printStackTrace();
                }
                return buffer;
            }
  • 相关阅读:
    block和delegate的区别
    iOS真机测试友盟碰到错误linker command failed with exit code 1 (use -v to see invocation) 百度地图的检索失败 sqlite 错误码
    iOS国际化多语言设置
    获取本机ip地址
    iOS-Senior19-FMDB第三方应用
    iOS-Senior17-CoreAnimation动画
    iOS-Senior18-CocoPods的安装步骤
    iOS-Senior17-UIView动画
    iOS-Senior17-菊花风火轮(代码)
    iOS-Senior17-Gif动画图片(代码)
  • 原文地址:https://www.cnblogs.com/lifan12589/p/13203958.html
Copyright © 2011-2022 走看看