Tekst ze Stringa do Bitmapy

0

Witam

Chcę wygenerować flik graficzny np. BMP w którym będą czarne litery i białe tło. Po prostu będe podawał parametry takie jak "tekst (np. String s = "Hello Java"), czcionke. docelowy rozmiar bitmapy a dostane bitmape w której będzie się wyświetlał ten tekst.

Moje pytanie jest takie: czy mógłby mnie ktoś naprowadzić jak to zrobic? Nie znalazłem nic w Java 2D co by mi pomogło...czy jest możliwe zrealizowanie tego bez jakiś zewnętrznych bibliotek? Jeżeli tak to w jakim pakiecie znajdęklasy i metody mi potrzebne?
Jeżeli nie to gdzie mogę znaleźć takie biblioteki? Jakieś nazwy?

Pozdrawiam

PS: Nie zależy mi na tym by istniejacy plik graficzny zamienić na Stringa (np Base64), wysłac go a potem tego Stringa zamienić w plik graficzny..to nie tak.

0

Klasy: Graphics2D lub Graphics
Metody: drawString, setFont

Do poczytania: http://www.exampledepot.com/egs/java.awt.image/CreateBuf.html

0
javauser napisał(a)

Klasy: Graphics2D lub Graphics
Metody: drawString, setFont

No tak owszem tylko drawString wypisze mi ładnie napis na komponencie Graphics czyli np na panelu etc co właściwie mi nic nie daje. No bo przecież nie mogę sobie ot tak wyciać kawałka Panelu i zapisać w bitmapie. W ogóle to bez żadnego okienka ma być czyli żadnego JFrame etc
Czysty program w konsoli bez funkcji podglądu,wizualizacji etc.

Jakiś pomysł?

0

A jak nie chcesz wizualizacji, to rysuj po panelu, który nie jest widoczny (setVisible(false)).

0
javauser napisał(a)

Klasy: Graphics2D lub Graphics
Metody: drawString, setFont

Ok , dzięki. Zawsze myślałem, że Graphics jest bezpośrednio dedykowany do Swinga ale się myliłem. Skorzystałem i zrobiłem poniższy kod który działa (dla tych co mieliby podobne problemy):


import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import javax.imageio.ImageIO;
import java.io.*;

/**
 *
 * @author lucjan.lipka
 */
public class StringToImage {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int width = 200;
        int height = 200;

        // Create buffered image that does not support transparency
        BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = bimage.createGraphics();
        //Draw String on BufferedImage
        g2d.drawString("Java is...amazing", 20, 100);
        //File IO
        File plik = new File("c:/1/test.bmp");

        try {
            //Write BufferedImage on disk
            ImageIO.write(bimage, "bmp", plik);
        } catch (Exception e) {
            System.out.println("error" + e);
        }
    }
}

Dostępne rozszerzenia plików graficznych:

import javax.imageio.ImageIO;

public class Formats {
  static public void main(String args[]) throws Exception {
    String names[] = ImageIO.getReaderFormatNames();
    for (int i = 0; i < names.length; ++i) {
      System.out.println("reader " + names[i]);
    }

    names = ImageIO.getWriterFormatNames();
    for (int i = 0; i < names.length; ++i) {
      System.out.println("writer " + names[i]);
    }
  }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1