Java中图片压缩处理

来源:互联网 发布:mac自带音频剪辑软件 编辑:程序博客网 时间:2024/05/18 03:41
package aa;import java.io.*;import java.util.Date;import java.awt.*;import java.awt.image.*;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.*;/** * 图片压缩处理 *  *  * 报错: Access restriction:The type JPEGCodec is not accessible due to * restriction on required library C:\Program Files\Java\jre6\lib\rt.jar *  * 解决方法: Project -> Properties -> libraries, 先remove掉JRE System Library,然后再Add * Library重新加入。 ============================================ * 在Eclipse中处理图片,需要引入两个包: import com.sun.image.codec.jpeg.JPEGCodec; import * com.sun.image.codec.jpeg.JPEGImageEncoder; 报错: Access restriction: The type * JPEGImageEncoder is not accessible due to restriction on required library * C:\Java\jre1.6.0_07\lib\rt.jar *  *  * 此时解决办法: Eclipse 默认把这些受访问限制的API设成了ERROR。只要把Windows-Preferences-Java-Complicer- * Errors/Warnings里面的Deprecated and restricted API中的Forbidden references(access * rules)选为Warning就可以编译通过。 优先选择第一种方法 */public class ImgCompress {private Image img;private int width;private int height;@SuppressWarnings("deprecation")public static void main(String[] args) throws Exception {System.out.println("开始:" + new Date().toLocaleString());ImgCompress imgCom = new ImgCompress("D:\\11.jpg");imgCom.resizeFix(600, 600);System.out.println("结束:" + new Date().toLocaleString());}/** * 构造函数 */public ImgCompress(String fileName) throws IOException {File file = new File(fileName);// 读入文件img = ImageIO.read(file); // 构造Image对象width = img.getWidth(null); // 得到源图宽height = img.getHeight(null); // 得到源图长}/** * 按照宽度还是高度进行压缩 *  * @param w *            int 最大宽度 * @param h *            int 最大高度 */public void resizeFix(int w, int h) throws IOException {if (width / height > w / h) {resizeByWidth(w);} else {resizeByHeight(h);}}/** * 以宽度为基准,等比例放缩图片 *  * @param w *            int 新宽度 */public void resizeByWidth(int w) throws IOException {int h = (int) (height * w / width);resize(w, h);}/** * 以高度为基准,等比例缩放图片 *  * @param h *            int 新高度 */public void resizeByHeight(int h) throws IOException {int w = (int) (width * h / height);resize(w, h);}/** * 强制压缩/放大图片到固定的大小 *  * @param w *            int 新宽度 * @param h *            int 新高度 */public void resize(int w, int h) throws IOException {// SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图File destFile = new File("D:\\333.jpg");FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流// 可以正常实现bmp、png、gif转jpgJPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(image); // JPEG编码out.close();}}

0 0
原创粉丝点击