从imageReader写回修改后的图像 [英] Write back modified image from imageReader

查看:233
本文介绍了从imageReader写回修改后的图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从动画gif中读取分离的图像,我只需要在 frames [i] 中对它们进行更改,然后将它们设置为文件并用作为新文件保存。

 档案档案=新档案(gif1.gif); 
ImageReader reader = ImageIO.getImageReadersBySuffix(GIF)。next();
ImageInputStream in = ImageIO.createImageInputStream(file);
reader.setInput(in);

文件输出=新文件(k.gif);

ImageWriter writer = ImageIO.getImageWritersBySuffix(GIF)。next();
ImageOutputStream out = ImageIO.createImageOutputStream(file);
writer.setOutput(out);

int numImages = reader.getNumImages(true);
BufferedImage [] frames = new BufferedImage [pocetObrazku]; (int i = 0; i< numImages; i ++)
{

BufferedImage image = reader.read(i);
frames [i] = reader.read(i);

$ / code $ / pre

我很乐意提供任何帮助。$ b $坦克@StanislavL的链接( https ://community.oracle.com/thread/1264385 )在评论中,这真的很有帮助。有我的解决方案:

  File file = new File(gif1.gif); 
ImageReader reader = ImageIO.getImageReadersBySuffix(GIF)。next();
ImageInputStream in = ImageIO.createImageInputStream(file);
reader.setInput(in);

int numImages = reader.getNumImages(true);
BufferedImage [] frames = new BufferedImage [pocetObrazku];

文件fileOut = new File(k.gif);
fileOut.createNewFile();
ImageWriter iw = ImageIO.getImageWritersByFormatName(gif)。next();

ImageOutputStream ios = ImageIO.createImageOutputStream(fileOut);
iw.setOutput(ios);
iw.prepareWriteSequence(null); (int i = 0; i< numImages; i ++){
BufferedImage image = reader.read(i);


frames [i] = reader.read(i);

IIOMetadata metadata = reader.getImageMetadata(i);
IIOImage ii = new IIOImage(image,null,metadata);
iw.writeToSequence(ii,(ImageWriteParam)null);
}


I read separated images from animated gif and I need just make change with them in frames[i] and then set them back to file and save with writer as new file.

    File file = new File("gif1.gif");
    ImageReader reader = ImageIO.getImageReadersBySuffix("GIF").next();
    ImageInputStream in = ImageIO.createImageInputStream(file);
    reader.setInput(in);

    File output = new File("k.gif");

    ImageWriter writer = ImageIO.getImageWritersBySuffix("GIF").next();
    ImageOutputStream out = ImageIO.createImageOutputStream(file);
    writer.setOutput(out);

    int numImages = reader.getNumImages(true); 
    BufferedImage[] frames = new BufferedImage[pocetObrazku];

    for (int i = 0; i < numImages; i++)
    {

        BufferedImage image = reader.read(i);
        frames[i] = reader.read(i);        
    }    

I'll be glad for any help.

解决方案

Tanks @StanislavL for link (https://community.oracle.com/thread/1264385) in comment, it was really helpful. There is my solution:

File file = new File("gif1.gif");
ImageReader reader = ImageIO.getImageReadersBySuffix("GIF").next();
ImageInputStream in = ImageIO.createImageInputStream(file);
reader.setInput(in);

int numImages = reader.getNumImages(true); 
BufferedImage[] frames = new BufferedImage[pocetObrazku];

File fileOut = new File("k.gif");
fileOut.createNewFile();
ImageWriter iw = ImageIO.getImageWritersByFormatName("gif").next();

ImageOutputStream ios = ImageIO.createImageOutputStream(fileOut);
iw.setOutput(ios);
iw.prepareWriteSequence(null);

for (int i = 0; i < numImages ; i++) {
    BufferedImage image = reader.read(i);
    frames[i] = reader.read(i);

    IIOMetadata metadata = reader.getImageMetadata(i);    
    IIOImage ii = new IIOImage(image, null, metadata);      
    iw.writeToSequence(ii, (ImageWriteParam) null);    
}

这篇关于从imageReader写回修改后的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆