小弟急求:
基于Java语言,实现图形图像的缩减。
在不影响观看的情况下,减小图形图像的体积。
1、Flash文件的缩小。2、gif文件的缩小。
能给出思路也行,最好是参考代码
[b]问题补充:[/b]
在不影响观看的情况下,减小图形图像的容量,比如大小从165K缩小到80K,分辨率从1024*765缩小到100*50.
朋友..这个问题你算是问对人啦..
我最近也在做这方面的gif图片处理和flash方面的处理.
flash你搜搜ffmpeg和mencode的相关资料.
gif图片处理我帮你整理出来了,主要是用gif4j这个jar包来进行操作.
[code="java"]package com.org.gif4j;
import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;
import com.gif4j.GifDecoder;
import com.gif4j.GifEncoder;
import com.gif4j.GifImage;
import com.gif4j.GifTransformer;
public class demo {
public static void main(String[] args) {
File srcImg = new File("f:/test.gif");
File destImg = new File("f:/t.gif");
demo.getGifImage(srcImg, destImg, 270, 310, true);// 根据需要传参数
}
/**
* gif图的简单处理
*
* @param srcImg
* @param destImg
* @param width
* @param height
* @param smooth
*/
public static void getGifImage(File srcImg, File destImg, int width, int height, boolean smooth) {
try {
GifImage gifImage = GifDecoder.decode(srcImg);//创建一个GifImage对象.
// 1.缩放重新更改大小.
GifImage resizeIMG = GifTransformer.resize(gifImage,width, height,smooth);
// 2.剪切图片演示.
// Rectangle rect = new Rectangle(0,0,200,200);
// GifImage cropIMG = GifTransformer.crop(gifImage, rect);
// 3.按比例缩放
// GifImage scaleIMG = GifTransformer.scale(gifImage, 200.0, 200.0, true);//参数需要double型
// 4.其他的方法.还有很多,比如水平翻转,垂直翻转 等等.都是GifTransformer类里面的.
GifEncoder.encode(resizeIMG, destImg);
} catch (IOException e) {
e.printStackTrace();
}
}
}
[/code]
下载gif4j包.网址:http://www.gif4j.com/download.htm#PRO
gif4j很好的对gif图的操作进行了封装.具体的可以看下载后的帮助文件和example
将jar包引入工程..
下载gif4j包.网址[url]http://www.gif4j.com/download.htm#PRO [/url]
[quote]在不影响观看的情况下,减小图形图像的容量,比如大小从165K缩小到80K,分辨率从1024*765缩小到100*50. [/quote]
我的这个方法不是可以实现你的这种需求吗?
GifTransformer.scale()。。。
GifTransformer.resize()。。。。。
这两种你试了么 ?
怎么按你说的那样运行不出来结果呢
不会吧,可以根据图片的本身的大小传递合适的参数吧 .那个包引进去了吗?
最近我也在搞这个,我用的是ImageMagick,一个组件,
现在web应用经常会用到缩略图。然后一旦生成的缩略图小于100px * 100px,一些常用的java包,生成的图片确实有点惨不忍睹。
现在介绍使用Jmagick的使用,可以生成质量很好的缩略图,当然还有其他很多图像处理的方法。
首先jmagick(http://www.yeo.id.au/jmagick/)是ImageMagick(http://www.imagemagick.org/)的java 应用的接口。所以要先安装ImageMagick应用程序,你的java应用才能使用,在主页上你可以轻松找到下载的链接。
1。下载jmagick,imagemagick
2.安装ImageMagick,网站上有安装方法(windows,unnix),我只在win上做了安装,安装以后把安装目录下所有的dll文件copy到windows/system32/目录下。
3。下载的jmagick包含jmagick.jar,jmagick.dll文件,jmagick.dll需要copy到windows/system32/目录下。
4。web应用如果部署到tomcat下,那么最好在catalina.bat文件中改变如下设置
set JAVA_OPTS=%JAVA_OPTS% -Xms256M -Xmx768M -XX:MaxPermSize=128M -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="${catalina.base}\conf\logging.properties"
避免heap溢出的问题,参数看你自己的机器而定。( -Xms256M -Xmx768M -XX:MaxPermSize=128M )
5。还要注意如果部署到web应用,你在使用的class里面需要
System.setProperty("jmagick.systemclassloader","no");
要不然会报出UnsatisfiedLinkError: no JMagick in java.library.path.
实例如下:
public void resize(String picFrom,String picTo) {
try {
// Resize
ImageInfo info = new ImageInfo(picFrom);
MagickImage image = new MagickImage(new ImageInfo(picFrom));
MagickImage scaled = image.scaleImage(100, 86);//小图片文件的大小.
scaled.setFileName(picTo);
scaled.writeImage(info);
} catch(MagickApiException ex) {
} catch(MagickException ex) {
}
}
注:linux系统下,需要下载另外的包
by:阿飞
2006-06-03
来自
[url]http://topic.csdn.net/t/20060603/15/4798174.html[/url]