博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java】图片高质量缩放类
阅读量:4604 次
发布时间:2019-06-09

本文共 3301 字,大约阅读时间需要 11 分钟。

package com.test;    import com.sun.image.codec.jpeg.JPEGImageEncoder;  import com.sun.image.codec.jpeg.JPEGCodec;  import com.sun.image.codec.jpeg.JPEGEncodeParam;  import javax.swing.*;  import java.io.File;  import java.io.FileOutputStream;  import java.io.IOException;  import java.awt.*;  import java.awt.image.BufferedImage;  import java.awt.image.Kernel;  import java.awt.image.ConvolveOp;    public class ImageUtil {        public static void resize(File originalFile, File resizedFile,              int newWidth, float quality) throws IOException {            if (quality > 1) {              throw new IllegalArgumentException(                      "Quality has to be between 0 and 1");          }            ImageIcon ii = new ImageIcon(originalFile.getCanonicalPath());          Image i = ii.getImage();          Image resizedImage = null;            int iWidth = i.getWidth(null);          int iHeight = i.getHeight(null);            if (iWidth > iHeight) {              resizedImage = i.getScaledInstance(newWidth, (newWidth * iHeight)                      / iWidth, Image.SCALE_SMOOTH);          } else {              resizedImage = i.getScaledInstance((newWidth * iWidth) / iHeight,                      newWidth, Image.SCALE_SMOOTH);          }            // This code ensures that all the pixels in the image are loaded.          Image temp = new ImageIcon(resizedImage).getImage();            // Create the buffered image.          BufferedImage bufferedImage = new BufferedImage(temp.getWidth(null),                  temp.getHeight(null), BufferedImage.TYPE_INT_RGB);            // Copy image to buffered image.          Graphics g = bufferedImage.createGraphics();            // Clear background and paint the image.          g.setColor(Color.white);          g.fillRect(0, 0, temp.getWidth(null), temp.getHeight(null));          g.drawImage(temp, 0, 0, null);          g.dispose();            // Soften.          float softenFactor = 0.05f;          float[] softenArray = { 0, softenFactor, 0, softenFactor,                  1 - (softenFactor * 4), softenFactor, 0, softenFactor, 0 };          Kernel kernel = new Kernel(3, 3, softenArray);          ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);          bufferedImage = cOp.filter(bufferedImage, null);            // Write the jpeg to a file.          FileOutputStream out = new FileOutputStream(resizedFile);            // Encodes image as a JPEG data stream          JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);            JPEGEncodeParam param = encoder                  .getDefaultJPEGEncodeParam(bufferedImage);            param.setQuality(quality, true);            encoder.setJPEGEncodeParam(param);          encoder.encode(bufferedImage);      } // Example usage        public static void main(String[] args) throws IOException {  //       File originalImage = new File("C:\\11.jpg");  //       resize(originalImage, new File("c:\\11-0.jpg"),150, 0.7f);  //       resize(originalImage, new File("c:\\11-1.jpg"),150, 1f);           File originalImage = new File("C:\\1207.gif");           resize(originalImage, new File("c:\\1207-0.jpg"),150, 0.7f);           resize(originalImage, new File("c:\\1207-1.jpg"),150, 1f);      }  }

  

转载于:https://www.cnblogs.com/lhp2012/p/4816077.html

你可能感兴趣的文章
爬虫_房多多(设置随机数反爬)
查看>>
藏地密码
查看>>
爬虫去重(只是讲了去重的策略,没有具体讲实现过程,反正就是云里雾里)...
查看>>
react中将px转化为rem或者vw
查看>>
8816
查看>>
avcodec_open2()分析
查看>>
何如获取单选框中某一个选中的值
查看>>
paip.输入法编程----删除双字词简拼
查看>>
QQ悬浮返回顶部
查看>>
MySQL建表语句的一些特殊字段
查看>>
《Unix环境高级编程》读书笔记 第8章-进程控制
查看>>
腾讯前端二面题目详解
查看>>
mascara-1
查看>>
Jquery Form表单取值
查看>>
Android API level 与version对应关系
查看>>
Team Name
查看>>
String类
查看>>
西门子_TDC_数据耦合小经验
查看>>
接口测试与postman
查看>>
LINQ To XML的一些方法
查看>>