2009-12-02 7 views
2

J'ai essayé les deux lignes de code ci-dessous en vain. Le code fonctionne bien avec jpg, ou gif mais rend l'image rose si un png.PNG à JPG Java ImageIO problème

ImageIO.write(input, "jpg", profileFile); 

RenderedOp op = JAI.create("filestore", input, pFileName, "jpeg"); 

Quelqu'un d'autre rencontre ce problème? Je n'ai pas été capable de trouver une solution.

+2

Est-ce le transparent PNG? A-t-il un canal alpha? –

+0

Ce n'est pas transparent. Je ne suis pas sûr de la chaîne alpha. Ce code est utilisé lorsqu'un utilisateur télécharge des photos sur un site Web. Je convertis toutes les photos au format JPG et je voudrais les laisser utiliser le format PNG s'il en existe. –

Répondre

0

Je ne sais pas si c'est la bonne réponse ou non. Mais il ya another post that suggèrent que la mise en œuvre de l'écriture JPEG avec un canal alpha est un peu vilain.

0

Je dessine PNGs avec le code suivant et ne pas courir dans un problème. Il combine plusieurs images PNG en une seule image. Les images sont transparentes et utilisent une transformation bilinéaire pour le mélange.

BufferedImage image = new BufferedImage(BOARD_SIZE, BOARD_SIZE, BufferedImage.TYPE_INT_ARGB); 
Graphics2D g2d = image.createGraphics(); 
AffineTransformOp transformOp = new AffineTransformOp(new AffineTransform(), AffineTransformOp.TYPE_BILINEAR); 
g2d.drawImage(someOtherImage, transformOp, 0, 0); 

Quand je finis l'image, je l'écris à une réponse en utilisant le code suivant:

OutputStream responseStream = response.getOutputStream(); 
ImageIO.write(image, "PNG", responseStream); 
+1

Cela écrit un png, l'OP essaie d'écrire une image jpg/jpeg. –

Questions connexes