Java bÁsico

oi galera
estou com dificuldade em entender
este código entre as linha 18 e 23
pode ajudar?

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;

public class Main {
  static public void main(String args[]) throws Exception {
    int width = 200, height = 200;
    BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

    Graphics2D ig2 = bi.createGraphics();
    ig2.fillRect(0, 0, width - 1, height - 1);

    Iterator imageWriters = ImageIO.getImageWritersByFormatName("GIF");
    ImageWriter imageWriter = (ImageWriter) imageWriters.next();
    File file = new File("filename.gif");
    ImageOutputStream ios = ImageIO.createImageOutputStream(file);
    imageWriter.setOutput(ios);
    imageWriter.write(bi);
  }
}

Dayane, de onde você tirou esse código?
Pelo o que eu sei, Iterator serve para você percorrer uma coledção onde não existe ordenação por index, ou quando você precisa excluir elementos conforme está percorrendo uma a coleção.
Analisando o código me parece que a intenção é verificar se existe um arquivo do tipo GIF e gravá-lo em outro, mas creio que esse código não vai fazer isso corretamente.

Me desculpem se falado alguma besteira.

[]'s

[quote]Dayane, de onde você tirou esse código?
Pelo o que eu sei, Iterator serve para você percorrer uma coledção onde não existe ordenação por index, ou quando você precisa excluir elementos conforme está percorrendo uma a coleção.
Analisando o código me parece que a intenção é verificar se existe um arquivo do tipo GIF e gravá-lo em outro, mas creio que esse código não vai fazer isso corretamente.

Me desculpem se falado alguma besteira.

[/quote]

Sim, está correto o iterator vai percorrer um coleção que não existe uma ordenaçao por indice, e tambem pode fazer a interação do acesso a um elemento que esta agregado a um objeto.

Mas esse código é pra funcionar, pq não iria?
Pelo que analisei e verifica todos arquivos GIF e escreve por cima um novo arquivo chamado Filename.gif, seria mais ou menos
substituir todos arquivos do formato gif por esse ai…
Da pra editar pra uma maneira mais especifica vc pegar um nome de um arquivo e substituir por outro, como se fosse um copiar e colar
que daria uma mensagem, deseja substituir esse arquivo…

vc está correto…

[quote]oi galera
estou com dificuldade em entender
este código entre as linha 18 e 23
pode ajudar?[/quote]

Mas qual é a sua dificuldade ? O que você não esta entendendo?
O código não funciona?’

Seja mais específica…

import java.awt.Graphics2D;  
import java.awt.image.BufferedImage;  
import java.io.File;  
import java.util.Iterator;  
  
import javax.imageio.ImageIO;  
import javax.imageio.ImageWriter;  
import javax.imageio.stream.ImageOutputStream;  
  
public class Main {  
  static public void main(String args[]) throws Exception {  
    int width = 200, height = 200;  
    BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);  
  
    Graphics2D ig2 = bi.createGraphics();  
    ig2.fillRect(0, 0, width - 1, height - 1);  
  
    // Chama o método getImageWritersByFormatName, que retorna um iterador que pode ser usado para percorrer uma coleção
    // contendo objetos do tipo javax.imageio.ImageWriter ( http://docs.oracle.com/javase/1.4.2/docs/api/javax/imageio/ImageWriter.html )
    // Veja: http://docs.oracle.com/javase/1.4.2/docs/api/javax/imageio/ImageIO.html#getImageReadersByFormatName%28java.lang.String%29
    Iterator imageWriters = ImageIO.getImageWritersByFormatName("GIF");  
    // Ao chamar o método next, com sorte deve haver um ImageWriter que corresponda a gravação no formato GIF. 
    ImageWriter imageWriter = (ImageWriter) imageWriters.next();  
    // Aqui você cria um objeto java.io.File, que representa um NOME DE ARQUIVO EM DISCO (não um arquivo "em si"). 
    // Ele é necessário para passar como parâmetro para o método createImageOutputStream abaixo.
    File file = new File("filename.gif");  
    // Aqui obtemos um objeto ImageOutputStream, que servirá para passar como parâmetro para o método setOutput da classe ImageWriter abaixo.
    ImageOutputStream ios = ImageIO.createImageOutputStream(file);  
    // Indicando que o ImageWriter deve gravar nesse arquivo...
    imageWriter.setOutput(ios);  
    // O ImageWriter deve gravar a BufferedImage no arquivo. 
    imageWriter.write(bi);  
    // Não está escrito no seu programa original, mas acho que ele deveria ter também:
    ios.close(); 
  }  
}

[quote=carvalhos.diogo]Dayane, de onde você tirou esse código?
Pelo o que eu sei, Iterator serve para você percorrer uma coledção onde não existe ordenação por index, ou quando você precisa excluir elementos conforme está percorrendo uma a coleção.
Analisando o código me parece que a intenção é verificar se existe um arquivo do tipo GIF e gravá-lo em outro, mas creio que esse código não vai fazer isso corretamente.

Me desculpem se falado alguma besteira.

[]'s[/quote]

este codigo foi tirado deste site

:arrow: http://www.java2s.com/Code/Java/2D-Graphics-GUI/WriteImagewithImageWriter.htm

[quote=charleston10][quote]Dayane, de onde você tirou esse código?
Pelo o que eu sei, Iterator serve para você percorrer uma coledção onde não existe ordenação por index, ou quando você precisa excluir elementos conforme está percorrendo uma a coleção.
Analisando o código me parece que a intenção é verificar se existe um arquivo do tipo GIF e gravá-lo em outro, mas creio que esse código não vai fazer isso corretamente.

Me desculpem se falado alguma besteira.

[/quote]

Sim, está correto o iterator vai percorrer um coleção que não existe uma ordenaçao por indice, e tambem pode fazer a interação do acesso a um elemento que esta agregado a um objeto.

Mas esse código é pra funcionar, pq não iria?
Pelo que analisei e verifica todos arquivos GIF e escreve por cima um novo arquivo chamado Filename.gif, seria mais ou menos
substituir todos arquivos do formato gif por esse ai…
Da pra editar pra uma maneira mais especifica vc pegar um nome de um arquivo e substituir por outro, como se fosse um copiar e colar
que daria uma mensagem, deseja substituir esse arquivo…

vc está correto…

[quote]oi galera
estou com dificuldade em entender
este código entre as linha 18 e 23
pode ajudar?[/quote]

Mas qual é a sua dificuldade ? O que você não esta entendendo?
O código não funciona?’

Seja mais específica…[/quote]

eu não esta entendendo como a imagem estava sendo gravada
os códigos entre as linhas 18 até a 23 estavam confusos pra min
mais o colega entanglement respondeu da foram que eu queria
obrigado pela ajuda :smiley: