user5148441
user5148441

Reputation:

Java: Resize image doesn't work

I do not know why this method does not work to resize an image. No errors occur (I have an exception if so):

   private static void resizeImage(int width, int height) {
        try {
            BufferedImage rawImg = ImageIO.read(new File("%imgg%.png"));
            int gamlaWidth = rawImg.getWidth();
            int gamlaHeight = rawImg.getHeight();
            BufferedImage dimg = new BufferedImage(width, height, rawImg.getType());
            Graphics2D g = rawImg.createGraphics();
            g.drawImage(rawImg, 0, 0, 114, 114, null);
            g.dispose();  
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Ett fel uppstod:\n" + e, "Felmeddelande", 0);
        }
    }  

Why doesn't this code change anything? I want the size to be 114x114.

Upvotes: 1

Views: 241

Answers (1)

Dan
Dan

Reputation: 7744

You could always use this code to resize an image.

Image smallerImage = null;
ImageIcon smallerImageIcon = null;
public void resizeImage(int width, int height, String image)

{
    ImageIcon originalImage = new ImageIcon(image);
    smallerImage = originalImage.getImage().getScaledInstance(width,height,0);
    smallerImageIcon = new ImageIcon(smallerImage);
}

Using this method if you wanted an image %imgg%.png to be 114 by 114 you would call the method like so

resizeImage(114, 114, "%imgg%.png");

With your code I believe the problem might be where you set it to 114 by 114 since that size is different to the scaled size.

Try

BufferedImage createResizedCopy(Image originalImage, int scaledWidth, int scaledHeight, boolean preserveAlpha)
{
    System.out.println("resizing...");
    int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
    BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
    Graphics2D g = scaledBI.createGraphics();
    if (preserveAlpha) {
        g.setComposite(AlphaComposite.Src);
    }
    g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); 
    g.dispose();
    return scaledBI;
}

Use

ImageIcon originalImage = new ImageIcon("%imgg%.png");
Image resizedImage = createResizedCopy(originalImage.getImage(),114,114,true);

See here

Upvotes: 1

Related Questions