我用java读取一个gif图片,把它再重新写一个gif图片,但是新写出来的图片就没有动画了,为什么??
急用,请高手帮忙,谢谢我刚开始是这样写的,运行生成的gif图片不能看
List < BufferedImage > images = new ArrayList<BufferedImage>();
try{
File file=new File("e:\\awkoe.gif");
java.util.Iterator<ImageReader> imageReaders = ImageIO.getImageReadersByFormatName("gif");
ImageReader imageReader = (ImageReader)imageReaders.next();
imageReader.setInput(ImageIO.createImageInputStream(file));
for(int i = 0;true;++i){
try{
BufferedImage aa=imageReader.read(i);
images.add(aa);
}catch (Exception e) {
break;
}
}
BufferedImage[] bufimages= images.toArray(new BufferedImage[images.size()]);
Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersByFormatName("gif");
ImageWriter imageWriter = (ImageWriter)imageWriters.next();
File outfile=new File("d:\\aa.gif");
outfile.delete();
imageWriter.setOutput(ImageIO.createImageOutputStream(outfile));
if(imageWriter.canWriteSequence()){
imageWriter.prepareWriteSequence(null);
for(int i = 0;i < bufimages.length;++i){
imageWriter.writeToSequence(new IIOImage(bufimages[i],null,null),null);
}
imageWriter.endWriteSequence();
}else{
for(int i = 0;i < bufimages.length;++i){
imageWriter.write(bufimages[i]);
}
}
}catch (Exception e) {
e.printStackTrace();
} 现在用这个方法,生成的gif可以看,但是他不是动画
try {
File file=new File("d:\\aa.gif");
Image image=ImageIO.read(new File("e:\\awkoe.gif"));
GifEncoder encoder = new GifEncoder(image,new FileOutputStream(file));
encoder.encode();
} catch (Exception e) {}请大家帮忙 谢谢
急用,请高手帮忙,谢谢我刚开始是这样写的,运行生成的gif图片不能看
List < BufferedImage > images = new ArrayList<BufferedImage>();
try{
File file=new File("e:\\awkoe.gif");
java.util.Iterator<ImageReader> imageReaders = ImageIO.getImageReadersByFormatName("gif");
ImageReader imageReader = (ImageReader)imageReaders.next();
imageReader.setInput(ImageIO.createImageInputStream(file));
for(int i = 0;true;++i){
try{
BufferedImage aa=imageReader.read(i);
images.add(aa);
}catch (Exception e) {
break;
}
}
BufferedImage[] bufimages= images.toArray(new BufferedImage[images.size()]);
Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersByFormatName("gif");
ImageWriter imageWriter = (ImageWriter)imageWriters.next();
File outfile=new File("d:\\aa.gif");
outfile.delete();
imageWriter.setOutput(ImageIO.createImageOutputStream(outfile));
if(imageWriter.canWriteSequence()){
imageWriter.prepareWriteSequence(null);
for(int i = 0;i < bufimages.length;++i){
imageWriter.writeToSequence(new IIOImage(bufimages[i],null,null),null);
}
imageWriter.endWriteSequence();
}else{
for(int i = 0;i < bufimages.length;++i){
imageWriter.write(bufimages[i]);
}
}
}catch (Exception e) {
e.printStackTrace();
} 现在用这个方法,生成的gif可以看,但是他不是动画
try {
File file=new File("d:\\aa.gif");
Image image=ImageIO.read(new File("e:\\awkoe.gif"));
GifEncoder encoder = new GifEncoder(image,new FileOutputStream(file));
encoder.encode();
} catch (Exception e) {}请大家帮忙 谢谢
解决方案 »
- cxf+spring 在eclipse下遇到的问题
- hibernate generator class="uuid.hex" 的问题
- Tomcat 虚拟路径问题 求大虾指点!
- jsp sqlserver 批量插入数据
- java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'count(*) count' 中
- 向前辈们求助,我是菜鸟,关于连接数据库取值的问题。
- servlet中调用bean的同步问题
- 急需 JSR 168 API 书籍
- thinking in java 第三版中文版是不是还没出啊?
- :::::::::::::::: 关于jsp 的 include 方法的疑问 ::::::::::::::::::::::
- 无法载入sun/plugin/javaruntime类 的错误,100分酬谢- ==
- 怎样单独使用 Ext 的 combobox
package imageCopy;public class Conf { public static final String OLDPATH="d:/dzh.jpg";
public static final String NEWPATH="e:/dzh123/asdf/adsf/asdf/asdf";
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class ImageOperator {
public String FileCopy() {
String result="";
File old = new File(Conf.OLDPATH);
File newImage = new File(Conf.NEWPATH);
newImage.mkdirs();
FileInputStream fis = null;
FileOutputStream fos = null; try {
if (!old.exists()) {
result="the file is not exists";
return result;
} else {
fis = new FileInputStream(old);
if(!newImage.exists() ){
//newImage.mkdir();
newImage.createNewFile();
}
fos = new FileOutputStream(newImage+"/"+ old.getName());
byte[] temp = new byte[1000];
int size = fis.read(temp);
while (size != -1) {
fos.write(temp);
size = fis.read(temp);
}
result="the File Copy is success!";
return result;
}
} catch (FileNotFoundException fileNot) {
result="the File Copy is Failed!";
fileNot.printStackTrace();
return result;
}
catch(IOException e){
e.printStackTrace();
result="the File Copy is Failed!";
return result;
}
finally{
try{
fis.close();
fos.close();
}catch(Exception ex){}
} }
}
//主程序
package imageCopy;public class ImageMain { public static void main(String[] args) {
ImageOperator op=new ImageOperator();
System.out.println( op.FileCopy());
}}
我需要在一个jsp页面上有个<img src='/image'>标签,他提交到一个servlet,
在servlet中读取本地的一个gif图片,把它返回到jsp页面。
这样怎么弄?
String imagepath=request.getParameter("imagepath");
System.out.println("imagepath:"+imagepath);
String serverpath=request.getRealPath("/")+"image"+imagepath.substring(imagepath.lastIndexOf("\\"), imagepath.length());
System.out.println("serverpath:"+serverpath);
UpBiz objupbiz=new UpBiz();
if(objupbiz.readFile(imagepath, serverpath))
{
RequestDispatcher requestdispatcher=request.getRequestDispatcher("/ok.jsp");
requestdispatcher.forward(request, response);
}
else
{
RequestDispatcher requestdispatcher=request.getRequestDispatcher("/fial.jsp");
requestdispatcher.forward(request, response);
}UpBiz类这样写
public class UpBiz {
private OutputStream out=null;
private InputStream in=null;
private BufferedInputStream inb=null;
private BufferedOutputStream outb=null;
public boolean readFile(String imagepath,String serverpath)
{
boolean flag=false;
File infile=new File(imagepath);
File outfile=new File(serverpath);
byte[] b=new byte[100];
try {
in = new FileInputStream(infile);
out=new FileOutputStream(outfile);
inb=new BufferedInputStream(in);
outb=new BufferedOutputStream(out);
int i=in.read(b);
while(i!=-1)
{
outb.write(b);
outb.flush();
i=inb.read(b);
}
flag=true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
inb.close();
outb.close();
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
}
试一试吧!
示例:
Image image =Toolkit.getDefaultToolkit.createImage(当前类类名.class.getResource(图片所在位置));