Galera, como eu posso manipular uma imagem BMP? Inserir texto nela, ou algum outro desenhor, etc. Abraços.
Ola, obrigado pela resposta. Vc teria algum exemplo simples, de como inserir texto em uma imagem bmp por exemplo? Vlw
O GUJ tem um tutorial falando como criar imagens… pra salvar é só usar a classe ImageIO.
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
public class Java2DTest {
public void write(final String filename, final BufferedImage image) {
final File file = new File(filename);
try {
final FileOutputStream output = new FileOutputStream(file);
ImageIO.write(image, "bmp", output);
} catch (final Exception e) {
e.printStackTrace();
}
}
public BufferedImage createImage(final int width, final int height) {
final BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
final Graphics2D graphics = image.createGraphics();
for (int i = 1; i <= width / 2; i++)
graphics.draw(new Ellipse2D.Double(width / i, height / i, width,
height));
graphics.drawString("GUJ", width / 2, height / 2);
return image;
}
public static void main(final String[] args) {
final Java2DTest test = new Java2DTest();
final BufferedImage image = test.createImage(500, 500);
test.write("D:\\test.bmp", image);
}
}
Vlw amigo, desculpe, pois nao tinha visto o artigo.
Amigo, me surgiu uma duvida aqui, como faço para escreve uma string de cima pra baixo, girada 90 graus. Pq o drawString so imprime de forma normal. Vlw mano.
Dá pra fazer assim:
graphics.rotate(Math.toRadians(90));
graphics.drawString("GUJ", width / 2, - height / 2);
Mas acho que não é isso que vc quer, é? Se for pra escrever tipo
Acho que vc vai ter que fazer na mão mesmo… dá uma olhada no Graphics2D#setTransform(AffineTransform), nunca usei e não sei se serve pra isso, mas quem sabe…
Eu ahco que pra escrever estilo
Voce vai ter que usar o FontMetrics medir o tamanho da letra e desenhar cada uma em um for adicionando o tamanho da letra anterior a posição atual.
[quote=MarceloS]Dá pra fazer assim:
graphics.rotate(Math.toRadians(90));
graphics.drawString("GUJ", width / 2, - height / 2);
Mas acho que não é isso que vc quer, é? Se for pra escrever tipo
Acho que vc vai ter que fazer na mão mesmo… dá uma olhada no Graphics2D#setTransform(AffineTransform), nunca usei e não sei se serve pra isso, mas quem sabe…[/quote]
Nao amigo, acho que eh da forma como vc falou mesmo, eu nao quero
G
U
J
Nao, eu quero que rotacione a string mesmo, so que nao consigo demonstrar aqui ehhe, mais acredito que seja isso que vc colocou, vou da uma testada aqui. Vlw:)
[quote=mizael86]
Nao, eu quero que rotacione a string mesmo, so que nao consigo demonstrar aqui ehhe, mais acredito que seja isso que vc colocou, vou da uma testada aqui. Vlw:)[/quote]
Se achar a resposta posta aí, também fiquei curioso… :roll:
Opa!
Bom, eu não sei fazer isso, mas você não pode girar a imagem, escrever nela rotacionada, salvar a imagem e girar a imagem novamente?
Acho que isso é gambi, mas não vejo outro jeito.
Abraço.
Usei o exemplo do MarceloS e funcionou sem problemas
Só que ele gera um BMP de 24 bits (16 milhões de cores). No entanto, preciso gerar um BMP de 4bits (16 cores) alguém sabe como? Estive olhando as seguintes classes:
BMPConstants bmpc;
BMPMetadata bmpm = new BMPMetadata();
BMPImageWriteParam bmpwp = new BMPImageWriteParam();
BMPMetadataFormatResources bmpmfr = new BMPMetadataFormatResources();
BMPMetadataFormat bmpmf;
BMPImageWriterSpi bmpws = new BMPImageWriterSpi();
BMPImageWriter bmpw = new BMPImageWriter(bmpws);
BMPImageReaderSpi bmprs = new BMPImageReaderSpi();
BMPImageReader bmpr = new BMPImageReader(bmprs);
Mas não achei nada relativo a Color Depth ou BIT Depth em nenhuma delas.
Alguém tem alguma dica?
Abraço