[二维码生成器]二款java图片处理组件Jmagick实例

更新时间:2016-10-29    来源:图片处理    手机版     字体:

【www.bbyears.com--图片处理】

下载地址为: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教程pythonruby编程来完成。同时imagemagick提供了一个高质量的2d工具包,部分支持svg。现在,imagemagic的主要精力集中在性能、减少bug以及提供稳定的api和abi上

本文来源:http://www.bbyears.com/ps/27890.html

猜你感兴趣

热门标签

更多>>

本类排行