Montar uma imagem

Estou montando uma classe que pega um string para converter em uma imagem. Só que não consigo passar os pixels para a imagem, travei na createImage. Como faço para passar os parametros do pixels para essa imagem?

[code]class ComparaFonte extends JPanel{

public BufferedImage caracter;
public String teclado;
TextLayout layout;
FontRenderContext frc;
Font fonte;
Graphics faceFonte;
String listaFontes[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames( );

public Image montaFonte(String letra) {
    Image imagemLetra = null;
    
    for (int f=0; f < listaFontes.length; f++){
        fonte = new Font(listaFontes[f], Font.PLAIN, 12);
        faceFonte.setColor(Color.BLACK);
        faceFonte.drawString(teclado,0,0);
        fonte=faceFonte.getFont();
        FontMetrics metrics = faceFonte.getFontMetrics();
        int heightFonte = metrics.getHeight();
        int widthFonte = metrics.getMaxAdvance();
        imagemLetra = createImage(widthFonte, heightFonte);
        
   }  
   return imagemLetra;
}

}[/code]

Por favor mandem sugestões.

Tem alguns problemas no seu código.

  1. Para que você estende de JPanel?
  2. Por que está renderizando tantas vezes, se você deseja retornar apenas 1 delas?
  3. Seu objeto faceFonte está nulo. Ele deve ser obtido da BufferedImage;
  4. Você não está usando as FontMetrics corretas.

Para criar e escrever sobre uma imagem, faça:

BufferedImage img = new BufferedImage(width, heigth, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = (Graphics2D) img.createGraphics(); //Seu código de pintura aqui g2d.dispose();

Ola, ve se isso te ajuda… um código exemplo…


public static void main(String... args) throws FileNotFoundException, IOException {
        String listaFontes[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
        int sizeFont = 20;
        int width = 400;
        int height = listaFontes.length * sizeFont;
        BufferedImage imagem = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = imagem.createGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, width, height);

        int posInicial = 0;
        for (String font : listaFontes) {
            posInicial += sizeFont;
            g.setColor(Color.BLACK);
            g.setFont(new Font(font, Font.PLAIN, sizeFont));
            g.drawString(font, 1, posInicial);

        }
        g.dispose();

        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(new FileOutputStream("Teste.jpg"));
        encoder.encode(imagem);
    }

Este código gera um arquivo com os nomes da fonte no formato de imagem…

Estou com um problema semelhante só que o não consigo ter controle sob o tamanho da imagem que eu gero.
http://www.guj.com.br/posts/list/132292.java#712146

Valeu leandrolw, deu certo consegui pegar suas dicas e adaptar para o meu programa.