公司要小弟用java完成类似下面sina: http://202.108.37.133/dtt/dtt_upload.php?id=120082&from=559的图片合成的彩信大头贴图像功能,小弟以前从未搞过图片处理方面的技术,现在遇到两大难题:1,动态gif如何与一幅静态gif图合成动态gif图.2如何裁剪,放大,缩小gif图.
望有搞过这方面的高手能提供相关代码及开发包,高分酬谢.....邮箱(MSN):[email protected]

解决方案 »

  1.   

    gif图片是有版权的,java开源项目应该不会有这方面的;
    收费的应该是有的:)你干脆用jpeg得了:)
      

  2.   

    用java的advanceImageJava advanced imaging:http://java.sun.com/products/java-media/jai/downloads/download-1_1_2_01.html可以缩放图片我以前玩过,推荐
      

  3.   

    jpeg不支持透明图哦,用jpeg就达不到我想要的那种效果了:(
    Java advanced imaging 支持图片裁剪么?我要看看.....
      

  4.   

    自己有个解决的方法:把动态gif一帧一帧分解成几张jpg图片,再把各帧与静态图片合成后再组合成一张动态gif,这样是可行的,但不知性能如何.而如何把静态图片裁剪成所需的大小就还是解决不了?????GIF图像是基于颜色列表的(存储的数据是该点的颜色对应于颜色列表的索引值),最多只支持8位(256色)。GIF文件内部分成许多存储块,用来存储多幅图像(Frame)或者是决定图像表现行为的控制块,用以实现动画和交互式应用。因此我们要生成和分析GIF图像的话,就需要对GIF文件格式进行分析,这里我们采用网上的一个开源代码进行处理。
    先在http://www.fmsware.com/stuff/gif.zip 下载处理GIF图片的代码,解压之后可以发现有AnimatedGifEncoder.java, GifDecoder.java, LZWEncoder.java,NeuQuant.java这4个JAVA文件,在这些文件的开头都已经有了简单的说明。其中AnimatedGifEncoder.是用来生成GIF文件的类,而GifDecoder则是用来解析GIF动态图像Frame信息的类。LZWEncoder是LZW压缩算法类,NeuQuant是用来生成颜色列表的类。* 分解GIF:
     *    GifDecoder d = new GifDecoder();
     *    d.read("sample.gif");
     *    int n = d.getFrameCount();
     *    for (int i = 0; i < n; i++) {
     *       BufferedImage frame = d.getFrame(i);  // frame i
     *       int t = d.getDelay(i);  // display duration of frame in milliseconds
     *       // do something with frame
     *    } * 合成GIF:
     *    AnimatedGifEncoder e = new AnimatedGifEncoder();
     *    e.start(outputFileName);
     *    e.setDelay(1000);   // 1 frame per sec
     *    e.addFrame(image1);
     *    e.addFrame(image2);
     *    e.finish();