2015-12-19 2 views
1

Я не знаю, почему этот метод не работает для изменения размера изображения. Ошибок не возникает (у меня есть исключение, если это так):Java: Изменение размера изображения не работает

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); 
     } 
    } 

Почему этот код ничего не меняет? Я хочу, чтобы размер был 114x114.

ответ

1

Вы можете использовать этот код, чтобы изменить его размер.

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); 
} 

Используя этот метод, если вы хотите изображение %imgg%.png быть 114 на 114 вы могли бы назвать метод, как так

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

С вашего кода я считаю, что проблема может быть там, где вы установите его на 114 на 114, так как этот размер отличается от масштабированного размера.

Попробуйте

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; 
} 

Использование

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

См here

+0

Но как я заменить старый файл новым, измененным размером изображения? –

+0

@ Stardox отредактировал его, чтобы вы объявили изображение перед тем, как запустить метод, и после того, как просто вызвали правильную переменную – Dan

+0

@Stardox Я также добавил, как использовать второй метод – Dan

Смежные вопросы