日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java实现图片压缩代码,图片大小转换

發布時間:2025/3/16 java 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实现图片压缩代码,图片大小转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在很多項目中我們會把上傳的圖片做處理,比較圖片上傳過多對服務器的容量和帶寬有很多的浪費,如果不是必須的高清圖片,我們可以通過代碼來做壓縮。在我的項目中我們壓縮圖片的目的是讓web頁面打開的速度很快,并且節省空間。

下面先分享一下代碼:

package org.util;import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.CropImageFilter; import java.awt.image.FilteredImageSource; import java.awt.image.ImageFilter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream;public class ImgTools {/*** 按照 寬高 比例壓縮* * @param img* @param width* @param height* @param out* @throws IOException*/public static void thumbnail_w_h(File img, int width, int height,OutputStream out) throws IOException {BufferedImage bi = ImageIO.read(img);double srcWidth = bi.getWidth(); // 源圖寬度double srcHeight = bi.getHeight(); // 源圖高度double scale = 1;if (width > 0) {scale = width / srcWidth;}if (height > 0) {scale = height / srcHeight;}if (width > 0 && height > 0) {scale = height / srcHeight < width / srcWidth ? height / srcHeight: width / srcWidth;}thumbnail(img, (int) (srcWidth * scale), (int) (srcHeight * scale), out);}/*** 按照固定寬高原圖壓縮* * @param img* @param width* @param height* @param out* @throws IOException*/public static void thumbnail(File img, int width, int height,OutputStream out) throws IOException {BufferedImage BI = ImageIO.read(img);Image image = BI.getScaledInstance(width, height, Image.SCALE_SMOOTH);BufferedImage tag = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);Graphics g = tag.getGraphics();g.setColor(Color.RED);g.drawImage(image, 0, 0, null); // 繪制處理后的圖 g.dispose();ImageIO.write(tag, "JPEG", out);}/*** 按照寬高裁剪* * @param srcImageFile* @param destWidth* @param destHeight* @param out*/public static void cut_w_h(File srcImageFile, int destWidth,int destHeight, OutputStream out) {cut_w_h(srcImageFile, 0, 0, destWidth, destHeight, out);}public static void cut_w_h(File srcImageFile, int x, int y, int destWidth,int destHeight, OutputStream out) {try {Image img;ImageFilter cropFilter;// 讀取源圖像BufferedImage bi = ImageIO.read(srcImageFile);int srcWidth = bi.getWidth(); // 源圖寬度int srcHeight = bi.getHeight(); // 源圖高度if (srcWidth >= destWidth && srcHeight >= destHeight) {Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT);cropFilter = new CropImageFilter(x, y, destWidth, destHeight);img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), cropFilter));BufferedImage tag = new BufferedImage(destWidth, destHeight,BufferedImage.TYPE_INT_RGB);Graphics g = tag.getGraphics();g.drawImage(img, 0, 0, null); // 繪制截取后的圖 g.dispose();// 輸出為文件ImageIO.write(tag, "JPEG", out);}} catch (Exception e) {e.printStackTrace();}}// #cut_w_hpublic static void main(String[] args) throws IOException {File img = new File("e:\\a\\a.jpg");FileOutputStream fos = new FileOutputStream("e:\\a\\b.jpg");// ImgTools.thumbnail(img, 100, 100, fos);// ImgTools.cut_w_h(img, 230, 200, fos);ImgTools.thumbnail_w_h(img, 100, 0, fos);}}

其實我們很多人喜歡在上傳的時候就做了限制了,這樣在上傳時就節省了帶寬,可是很多客戶是不會做圖片處理的,5M的大圖直接就給你上傳,限制了說我們做的不人性化。無奈之下只能在后臺進行轉換。

總結

以上是生活随笔為你收集整理的Java实现图片压缩代码,图片大小转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。