zoukankan      html  css  js  c++  java
  • 图片压缩

    /**
    * ��������ͼ��
    */
    package utils;

    /**
    * @author advance
    *
    */
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.RenderingHints;
    import java.awt.image.BufferedImage;
    import java.io.File;

    public class ThumbnailGenerator {
    public static void main(String[] args) throws Exception {
    transform("C:\Users\Administrator\vspider\files\20190111\image\jpg\0a08179283e02baefc529affd2dd30fe.jpg","C:\Users\Administrator\Desktop\新建文件夹 (2)\aaa.jpg",200,300,1000);
    }

    public static void transform(String originalFile, String thumbnailFile, int thumbWidth, int thumbHeight, int quality) throws Exception
    {
    Image image = javax.imageio.ImageIO.read(new File(originalFile));

    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);
    }

    if(imageWidth < thumbWidth && imageHeight < thumbHeight)
    {
    thumbWidth = imageWidth;
    thumbHeight = imageHeight;
    }
    else if(imageWidth < thumbWidth)
    thumbWidth = imageWidth;
    else if(imageHeight < thumbHeight)
    thumbHeight = imageHeight;

    BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics2D = thumbImage.createGraphics();
    graphics2D.setBackground(Color.WHITE);
    graphics2D.setPaint(Color.WHITE);
    graphics2D.fillRect(0, 0, thumbWidth, thumbHeight);
    graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);

    javax.imageio.ImageIO.write(thumbImage, "JPG", new File(thumbnailFile));
    }
    }

  • 相关阅读:
    出栈序列的可能性判定
    阿里离线数据处理平台2013暑期学校
    终于算完了这道『1+1』
    数据结构学习笔记之一 链表
    经典解释监视器和对象锁
    Sybase中字符串替换函数 STR REPLACE
    使用Arrays sort 方法進行排序
    clustered和nonclustered索引的区别
    Java序列化的作用和反序列化
    Java多线程下载并具断点续传功能JAR
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10255537.html
Copyright © 2011-2022 走看看