我的问题是动画gif图像,重新调整动画后不见了!
这是我使用的方法:
private BufferedImage doResize(int newWIDth,int newHeight,double scaleX,double scaleY,BufferedImage source) { GraphicsConfiguration gc = getDefaultConfiguration(); BufferedImage result = gc.createCompatibleImage(newWIDth,newHeight,source.getcolorModel().getTransparency()); Graphics2D g2d = null; try { g2d = result.createGraphics(); g2d.setRenderingHint(RenderingHints.KEY_INTERPolATION,RenderingHints.VALUE_INTERPolATION_BICUBIC); g2d.setRenderingHint(RenderingHints.KEY_INTERPolATION,RenderingHints.VALUE_INTERPolATION_BIliNEAR); g2d.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUAliTY); g2d.setRenderingHint(RenderingHints.KEY_ANTIAliASING,RenderingHints.VALUE_ANTIAliAS_ON); g2d.scale(scaleX,scaleY); g2d.drawImage(source,null); } finally { if (g2d != null) { g2d.dispose(); } } return result;}
所以,任何线索如何在重新调整尺寸后如何保持动画GIF?
谢谢.
在这个问题上(
Convert each animated GIF frame to a separate BufferedImage)寻找Alex Orzechowski的答案.他的代码接受一个gif文件并将其转换为ImageFrames数组(这是他创建的包装BufferedImage的类).然后看看这个将BufferedImages序列转换为gif文件的代码
(http://elliot.kroo.net/software/java/GifSequenceWriter/).
你可能猜到,你需要做的就是上传gif,使用Alex的代码将其转换为Imagefiles / BufferedImages数组,使用你的Graphics2D代码调整每个帧的大小(你需要为Alex’s添加一个setimage方法) ImageFrame类),然后使用Elliot的代码将数组转换为gif!这是我的样子:
public static voID main( String[] args ){ try { file imagefile = new file( "inputfile" ); fileinputStream fiStream = new fileinputStream( imagefile ); ImageFrame[] frames = readGif( fiStream ); for( int i = 0; i < frames.length; i++ ){ //code to resize the image BufferedImage image = ImageUtilitIEs.resizeImage( frames[ i ].getimage(),newWIDth,newHeight); frames[ i ].setimage( image ); } ImageOutputStream output = new fileImageOutputStream( new file( "Outputfile" ) ); GifSequenceWriter writer = new GifSequenceWriter( output,frames[0].getimage().getType(),frames[0].getDelay(),true ); writer.writetoSequence( frames[0].getimage() ); for ( int i = 1; i < frames.length; i++ ) { BufferedImage nextimage = frames[i].getimage(); writer.writetoSequence( nextimage ); } writer.close(); output.close(); } catch ( fileNotFoundException e ) { System.out.println( "file not found" ); } catch ( IOException e ) { System.out.println( "IO Exception" ); }}
然而,该代码不考虑具有在帧之间流逝的不同时间量的gif图像.
总结以上是内存溢出为你收集整理的调整动画GIF的大小,同时使用java保持动画全部内容,希望文章能够帮你解决调整动画GIF的大小,同时使用java保持动画所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)