allez hop, j'ai la forme !! un ptit code pour du bmp en plus (il n'y a rien à ma connaissance pour en créer aussi facilement que pour les png et jpg)
on a toujours image définie comme dans le code précédant
int resx = image.getWidth(); int resy = image.getHeight();
(new File("essai.bmp")).createNewFile(); DataOutputStream sortie = new DataOutputStream(new FileOutputStream("essai.bmp"));
//écriture de l'entête du fichier sortie.write(0x42); sortie.write(0x4D); writeInt(sortie,resx*resy*3+54); writeInt(sortie,0); writeInt(sortie,54); writeInt(sortie,40); writeInt(sortie,resx); writeInt(sortie,resy); sortie.write(1); sortie.write(0); sortie.write(24); sortie.write(0); writeInt(sortie,0); writeInt(sortie,resx*resy*3); writeInt(sortie,2851);writeInt(sortie,2851); writeInt(sortie,0);writeInt(sortie,0);
//ecriture des donnees int sup = (resx*3) % 4; for (int y=resy-1; y>=0; y--) { for (int x=0; x<resx; x++) { int rgb = image.getRGB(x, y); sortie.write(rgb & 0xFF); sortie.write((rgb>>8) & 0xFF); sortie.write((rgb>>16) & 0xFF); } for (int j=0; j<sup; j++) sortie.writeByte(0); } sortie.close();
où writeInt est la méthode suivante :
public void writeInt(DataOutputStream sortie, int n) { try { sortie.write((n) & 0xFF); sortie.write((n>>8) & 0xFF); sortie.write((n>>16) & 0xFF); sortie.write((n>>24) & 0xFF); } catch (IOException IOE) {} }
hop A+
Dobeliou [Qui pisse loin, ménage ses chaussures.]
|