二款java圖片處理組件Jmagick執行個體

來源:互聯網
上載者:User

下載地址為:http://downloads.jmagick.org/

先下載安裝 imagemagick-6.3.9-0-q16-windows-dll.exe,安裝目錄下(按自己所安裝的目錄找) 下的所有dll檔案 copy 到系統硬碟下的 “c:windowssystem32”檔案夾裡.

    再下載對應的jmagick jmagick-win-6.3.9-q16.zip 解壓 jmagick.dll 複製到系統硬碟下的 “c:windowssystem32”檔案夾裡; jmagick.jar 複製到tomcat下的lib檔案夾裡 或所使用項目的web-inf下lib檔案裡

則等比例縮放

public static void changeimge(file img, int width, int height) {

try {

image image = imageio.read(img);

//圖片尺寸的大小處理,如果長寬都小於規定大小,則返回,如果有一個大於規定大小,則等比例縮放

int srch = image.getheight(null);

int srcw = image.getwidth(null);

if (srch <= height && srcw <= width) {

return;

}

int tmph = width;

int tmpw = height;

//在長度和寬度都做了限制,不能超過設定值

while (srch > height || srcw > width) {

if(srcw > width) {

tmph = srch * width / srcw;

srch = tmph;

srcw=width;

}

if(srch > height) {

tmpw = srcw * height / srch;

srcw = tmpw;

srch=height;

}

}

bufferedimage bufferedimage = new bufferedimage(srcw, srch,

bufferedimage.type_3byte_bgr);

bufferedimage.getgraphics().drawimage(

image.getscaledinstance(srcw, srch, image.scale_smooth), 0,

0, srcw, srch, null);

fileoutputstream fos = new fileoutputstream(img);

jpegimageencoder encoder = jpegcodec.createjpegencoder(fos);

encoder.encode(bufferedimage);

fos.close();

// system.out.println("轉換成功...");

} catch (ioexception e) {

e.printstacktrace();

throw new illegalstateexception("圖片轉換出錯!", e);

}

}

代碼二
java代碼

import java.awt.dimension;

import java.awt.rectangle;

import java.text.simpledateformat;

import java.util.date;

import magick.compositeoperator;

import magick.compressiontype;

import magick.drawinfo;

import magick.imageinfo;

import magick.magickexception;

import magick.magickimage;

import magick.pixelpacket;

import magick.previewtype;

public class imageutils {

static{

//不能漏掉這個,不然jmagick.jar的路徑找不到

system.setproperty("jmagick.systemclassloader","no");

}

看一款利用jmagick產生縮圖

import java.awt.dimension;  
import java.awt.rectangle;  
import java.awt.image.bufferedimage;
import java.io.file;
import java.text.simpledateformat;  
import java.util.date;  
import javax.imageio.imageio;
import magick.compositeoperator;  
import magick.compressiontype;  
import magick.drawinfo;  
import magick.imageinfo;  
import magick.magickexception;  
import magick.magickimage;  
import magick.pixelpacket;  
import magick.previewtype;   
public class imageutil2 {  
    static {  
        // 不能漏掉這個,不然jmagick.jar的路徑找不到  
        system.setproperty("jmagick.systemclassloader", "no");  
    }    
    /** 
     * 壓縮圖片 
     *  
     * @param filepath 源檔案路徑 
     * @param topath 縮圖路徑 
     */ 
    public  void createimage(string filepath,string topath, int width, int height) {  
        imageinfo info = null;  
        magickimage image = null;  
        magickimage scaled = null;
        try {  
            info = new imageinfo(filepath);
         
            image = new magickimage(info);  
            scaled = image.scaleimage(width, height);// 小圖片檔案的大小.
            scaled.setfilename(rootpath+topath);  
            scaled.writeimage(info);
        } catch (exception e) {  
            e.printstacktrace();  
        } finally {  
         if(image!=null)
         {
          image.destroyimages();
         }
            if (scaled != null) {  
                scaled.destroyimages();  
            }  
        }
    }  
    public static void main(string[] args) {
     createimage("d:1012.jpg", "d:www.111cn.net_th.jpg", 110,100);  
//        system.out.println(isupdatebigpic("d:www.111cn.net11.jpg"));  
    }
}

imagemagick是一套功能強大、穩定而且免費的工具集和開發包,可以用來讀、寫和處理超過89種基本格式的圖片檔案,包括流行的tiff, jpeg, gif, png, pdf以及photocd等格式。利用imagemagick,你可以根據web應用程式的需要動態產生圖片, 還可以對一個(或一組)圖片進行改變大小、旋轉、銳利化、減色或增加特效等操作,並將操作的結果以相同格式或其它格式儲存。對圖片的操作,即可以通過命令列進行,也可以用c/c++、perl、java、php教程、python或ruby編程來完成。同時imagemagick提供了一個高品質的2d工具包,部分支援svg。現在,imagemagic的主要精力集中在效能、減少bug以及提供穩定的api和abi上

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.