欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)的圖片高質(zhì)量縮放類定義與用法示例

 更新時間:2017年11月28日 10:57:39   作者:CodingSir  
這篇文章主要介紹了Java實現(xiàn)的圖片高質(zhì)量縮放類定義與用法,涉及java針對圖片的運算與轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Java實現(xiàn)的圖片高質(zhì)量縮放類定義與用法。分享給大家供大家參考,具體如下:

找了很多都不理想,最后找個到老外寫的,不得不承認老外寫的確實牛B。

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

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java圖片操作技巧匯總》、《java日期與時間操作技巧匯總》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》及《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》。

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • java后端+前端使用WebSocket實現(xiàn)消息推送的詳細流程

    java后端+前端使用WebSocket實現(xiàn)消息推送的詳細流程

    后端向前端推送消息就需要長連接,首先想到的就是websocket,下面這篇文章主要給大家介紹了關(guān)于java后端+前端使用WebSocket實現(xiàn)消息推送的詳細流程,需要的朋友可以參考下
    2022-10-10
  • Spring源碼之事件監(jiān)聽機制詳解(@EventListener實現(xiàn)方式)

    Spring源碼之事件監(jiān)聽機制詳解(@EventListener實現(xiàn)方式)

    這篇文章主要介紹了Spring源碼之事件監(jiān)聽機制(@EventListener實現(xiàn)方式),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 查看jdk(java開發(fā)工具包)安裝路徑的兩種方法

    查看jdk(java開發(fā)工具包)安裝路徑的兩種方法

    若已經(jīng)安裝好了jdk(java開發(fā)工具包),也配置了環(huán)境變量,事后卻忘了安裝路徑在哪,如何查看jdk安裝路徑?本文給大家介紹了兩種查看jdk(java開發(fā)工具包)安裝路徑的方法,需要的朋友可以參考下
    2023-12-12
  • 基于Java制作一個好玩的打飛機游戲

    基于Java制作一個好玩的打飛機游戲

    這篇文章主要介紹了基于Java制作的打飛機小游戲,這里整理了詳細的代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java中字符串如何計算字節(jié)長度

    java中字符串如何計算字節(jié)長度

    這篇文章主要介紹了java中字符串如何計算字節(jié)長度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 一文詳解Java中的Stream的匯總和分組操作

    一文詳解Java中的Stream的匯總和分組操作

    這篇文章主要為大家詳細介紹了Java8中的Stream的匯總和分組的操作,文中的示例代碼講解詳細,對我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-09-09
  • Java 網(wǎng)絡(luò)編程總結(jié)

    Java 網(wǎng)絡(luò)編程總結(jié)

    這篇文章主要給大家分享Java 網(wǎng)絡(luò)編程的一個總結(jié),說到網(wǎng)絡(luò)編程肯定都會想到IP地址、端口、通信協(xié)議等一些必不可少的元素,下面來看看文章的詳細介紹吧
    2021-11-11
  • Java面向?qū)ο髮崿F(xiàn)汽車租賃系統(tǒng)

    Java面向?qū)ο髮崿F(xiàn)汽車租賃系統(tǒng)

    這篇文章主要為大家詳細介紹了Java面向?qū)ο髮崿F(xiàn)汽車租賃系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java?String相加底層原理分析

    Java?String相加底層原理分析

    這篇文章主要介紹了Java?String相加底層原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 全面探究 Java 內(nèi)部類

    全面探究 Java 內(nèi)部類

    說起內(nèi)部類這個詞,想必很多人都不陌生,但是又會覺得不熟悉。原因是平時編寫代碼時可能用到的場景不多,用得最多的是在有事件監(jiān)聽的情況下,并且即使用到也很少去總結(jié)內(nèi)部類的用法。今天我們就來一探究竟
    2021-09-09

最新評論