2015-09-29 8 views
-1

l'image Rotation coupée sur les côtés images mises en mémoire tampon, icône d'image, java

 BufferedImage img = ImageIO.read(new File(paramString)); 
    double locationX = img.getWidth(this)/2; 
    double locationY = img.getHeight(this)/2; 
    AffineTransform tx = AffineTransform.getRotateInstance(Math.toRadians(paramInt3), locationX, locationY); 
    AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); 
    BufferedImage bimg = new BufferedImage (img.getWidth(this), img.getWidth(this), BufferedImage.TYPE_BYTE_INDEXED); 
    bimg = op.filter (img, null); 
    ImageIcon localImageIcon = new ImageIcon (bimg); 

Pourquoi pourrait-côté être coupé? J'utilise une bibliothèque qui nécessite un résultat final ImageIcon.

+0

où est la question? – jhamon

+0

Mon code fait pivoter l'image mais les coins sont coupés en haut et à gauche – ogprogrammingsquad

Répondre

0

Votre image de destination est créé ici:

BufferedImage bimg = new BufferedImage (img.getWidth(this), img.getWidth(this), BufferedImage.TYPE_BYTE_INDEXED); 

C'est un carré! Si votre image source est pas un carré, vous devez créer une image de destination comme ceci:

BufferedImage bimg = new BufferedImage (img.getHeight(this), img.getWidth(this), BufferedImage.TYPE_BYTE_INDEXED); 
+0

Merci, mais l'image est carrée et les coins sont encore coupés en haut et à gauche. – ogprogrammingsquad

+0

Bien qu'il s'agisse évidemment d'une erreur, ce n'est pas vraiment le problème, car la référence 'bimg' est écrasée sur la ligne suivante. Peut-être que @ogprogrammingsquad signifiait 'op.filter (img, bimg);'? En passant 'null' comme paramètre de sortie, la destination est créée. – haraldK

0

Peut-être juste un problème d'arrondi:

double locationX = img.getWidth(this)/2; 
double locationY = img.getHeight(this)/2; 

largeur et la hauteur sont des nombres entiers, si elles ne sont même pas vous pourrait avoir des problèmes d'arrondi. Essayez ceci:

double locationX = ((double)img.getWidth(this))/2; 
double locationY = ((double)img.getHeight(this))/2;