2017-09-05 4 views
0

Le code suivant donne une image de taille supérieure. Mon image originale 200x200 était 6 KB. Après cela, j'ai eu une sortie de 100KB.La taille de l'image augmente après traitement dans Graphics2D

Quand je réapprovisionner la sortie en entrée à nouveau, il ne change pas la taille

File imageFile = "path to image" 
    BufferedImage subImage= ImageIO.read(new FileInputStream(imageFile)); 
    BufferedImage dest = new BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g2 = dest.createGraphics(); 
    g2.drawImage(subImage, 0, 0, 200, 200, null); 
    g2.dispose(); 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    ImageIO.write(dest, "png", out); 
+1

pouvez-vous ajouter le code où vous avez lu dans le mage et quand vous l'avez enregistré à nouveau? Si le fichier d'origine était un fichier JPG et que vous l'avez enregistré comme autre chose, il n'y a pas de surprise dans le changement de la taille du fichier. – Lothar

+0

@Lothar. Oui l'image originale était JPG. J'ai mis à jour le code maintenant. – Patan

Répondre

0

Taille de l'image varie en fonction du format , compression et canaux choisis.

PNG utilise généralement plus de taille, car il offre un canal alpha (que vous avez utilisée ici) et ne compression sans perte, par rapport au format JPEG. Essayez de choisir "JPEG" lorsque vous écrivez l'image, et vérifiez si la taille et la qualité répondent mieux à vos besoins.