亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java 實(shí)現(xiàn)圖片像素質(zhì)量壓縮與圖片長(zhǎng)寬縮放

 更新時(shí)間:2021年11月15日 09:28:28   作者:千丈  
這篇文章主要介紹了java 實(shí)現(xiàn)圖片像素質(zhì)量壓縮與圖片長(zhǎng)寬縮放,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java 圖片像素質(zhì)量壓縮與圖片長(zhǎng)寬縮放

今天找到的這個(gè)方法比以前項(xiàng)目用到的方法更好,這里記錄下,方便日后使用!

/**
     * 縮放圖片(壓縮圖片質(zhì)量,改變圖片尺寸)
     * 若原圖寬度小于新寬度,則寬度不變!
     * @param newWidth 新的寬度
     * @param quality 圖片質(zhì)量參數(shù) 0.7f 相當(dāng)于70%質(zhì)量
         * 2015年12月11日
     */
    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 < newWidth){
            newWidth = iWidth;
        }
        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("d:\\testImg\\1.jpg");  
         System.out.println("源文件大小" + originalImage.length());
//         File resizedImg = new File("d:\\testImg\\11.jpg");
//         resize(originalImage, resizedImg, 850, 1f);  
//         System.out.println("0.5轉(zhuǎn)換后文件大小" + resizedImg.length());
//         File resizedImg1 = new File("d:\\testImg\\111.jpg");
         File resizedImg1 = new File("/alidata/zkyj/dashixiong/tempImgFile/11.jpg");
         resize(originalImage, resizedImg1, 1550, 0.7f);  
         System.out.println("0.7轉(zhuǎn)換后文件大小" + resizedImg1.length());
    }  

java 修改圖片dpi(像素/大小)

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class DPIHandleHelper {
private static int DPI = 300;
public static void main(String[] args) {
    String path = "C:\\test.jpg";
    File file = new File(path);
    handleDpi(file, 300, 300);
}
/**
 * 改變圖片DPI
 *
 * @param file
 * @param xDensity
 * @param yDensity
 */
public static void handleDpi(File file, int xDensity, int yDensity) {
    try {
        BufferedImage image = ImageIO.read(file);
        JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new FileOutputStream(file));
        JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image);
        jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
        jpegEncoder.setJPEGEncodeParam(jpegEncodeParam);
        jpegEncodeParam.setQuality(0.75f, false);
        jpegEncodeParam.setXDensity(xDensity);
        jpegEncodeParam.setYDensity(yDensity);
        jpegEncoder.encode(image, jpegEncodeParam);
        image.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • javaweb分頁(yè)原理詳解

    javaweb分頁(yè)原理詳解

    這篇文章主要為大家詳細(xì)介紹了javaweb分頁(yè)的原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java 實(shí)現(xiàn)麥克風(fēng)自動(dòng)錄音

    Java 實(shí)現(xiàn)麥克風(fēng)自動(dòng)錄音

    這篇文章主要介紹了Java 實(shí)現(xiàn)麥克風(fēng)自動(dòng)錄音的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)

    JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)

    這篇文章主要介紹了JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Maven實(shí)戰(zhàn)之搭建Maven私服和鏡像的方法(圖文)

    Maven實(shí)戰(zhàn)之搭建Maven私服和鏡像的方法(圖文)

    本篇文章主要介紹了搭建Maven私服和鏡像的方法(圖文),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • eclipse中maven插件安裝教程

    eclipse中maven插件安裝教程

    這篇文章主要為大家詳細(xì)介紹了eclipse中maven插件安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java中如何檢查數(shù)組是否包含某整數(shù)

    Java中如何檢查數(shù)組是否包含某整數(shù)

    這篇文章主要介紹了在?Java?中檢查數(shù)組是否包含某整數(shù),在本文中,我們使用了幾個(gè)內(nèi)置的方法,如anyMatch()、contains()、binarySearch()等,我們將在給定的數(shù)組中找到一個(gè)值,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 基于SpringBoot實(shí)現(xiàn)上傳2種方法工程代碼實(shí)例

    基于SpringBoot實(shí)現(xiàn)上傳2種方法工程代碼實(shí)例

    這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)上傳工程代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java Web Listener實(shí)現(xiàn)事件監(jiān)聽與處理

    Java Web Listener實(shí)現(xiàn)事件監(jiān)聽與處理

    Java Web開發(fā)中的Listener是一種事件機(jī)制,通過(guò)監(jiān)聽Web應(yīng)用程序的事件,實(shí)現(xiàn)對(duì)事件的處理,從而實(shí)現(xiàn)更加靈活和高效的應(yīng)用程序開發(fā)。Listener能夠監(jiān)聽的事件包括應(yīng)用程序啟動(dòng)和關(guān)閉、Session創(chuàng)建和銷毀、請(qǐng)求和響應(yīng)對(duì)象的創(chuàng)建和銷毀等
    2023-04-04
  • Java線程中斷interrupt的常用方法

    Java線程中斷interrupt的常用方法

    本文主要介紹了Java線程中斷interrupt的常用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Spring自動(dòng)裝配@Autowired教程

    Spring自動(dòng)裝配@Autowired教程

    @Autowired注解是Spring中非常重要且常見的,接下來(lái)就簡(jiǎn)要的介紹一下它的用法。@Autowired默認(rèn)是通過(guò)set方法,按照類型自動(dòng)裝配JavaBean,set方法可省略不寫,它主要是修飾在成員變量上
    2023-01-01

最新評(píng)論