2013-06-06 4 views
0

http://cafefiles.naver.net/20130606_179/rise1925_1370463189365uKV60_PNG/%C1%A6%B8%F1_%BE%F8%C0%BD.pngКак перемасштабировать изображение двоичного символа?

Я попытался изменить размер изображений персонажей с помощью бикубического алгоритма в Java. , но как вы можете видеть это связано, связность образа сломалась ... я только что сделал код ..

public BufferedImage scaleImage(BufferedImage img, int width, int height, 
     Color background) { 

    BufferedImage newImage = new BufferedImage(width, height, 
      BufferedImage.TYPE_BYTE_BINARY); 

    Graphics2D g = newImage.createGraphics(); 

    try { 
     g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
       RenderingHints.VALUE_INTERPOLATION_BICUBIC); 
     //g.setBackground(background); 
     //g.setColor(Color.BLACK); 
     g.clearRect(0, 0, width, height); 
     g.drawImage(img, 0, 0, width, height, this); 

    } finally { 
     g.dispose(); 
    } 
return newImage; 
} 

, что я делаю неправильно?

+0

Этот URL-адрес «Отказ от ссылки». Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

0

Оригинал Я только что сказал, что использую .getScaledInstance(), но я прочитал статью о хороших практиках с java Image и Buffered Image api.

https://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

И это код Sorce, что я думаю, что вам нужно

public static BufferedImage scaleImage(BufferedImage img, int width, int height) { 

    BufferedImage newImage = new BufferedImage(width, height,img.getType()); 

    Graphics2D g = newImage.createGraphics(); 

    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
     RenderingHints.VALUE_INTERPOLATION_BICUBIC); 

    g.clearRect(0, 0, width, height); 
    g.drawImage(img, 0, 0, width, height, null); 
    g.dispose(); 

    return newImage; 
} 

Вы устанавливали новый повторно размера изображения, чтобы быть двоичным (читается как черно-белый т.е. 1 и 0) изображение. Хорошей практикой является всегда устанавливать повторно масштабированное изображение на тот же тип, что и изображение, основанное на повторном масштабировании, и изменять его тип с помощью метода преобразования.