我尝试用Java中的bicubic算法调整字符图像的大小。 但正如你所看到的那样,图像连接已经破裂...... 我刚刚制作了代码..
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 :(得分:0)
原来我只是想说使用.getScaledInstance(),但是我读了一篇关于java Image和Buffered Image api的良好实践的论文。
https://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html
这是我认为你需要的代码
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)图像。最好将重新缩放的图像设置为与重新缩放所基于的图像相同的类型,并使用转换方法更改其类型。