【发布时间】:2012-01-09 10:50:59
【问题描述】:
所以我正在尝试制作仅包含黑白像素的图像。我的问题是,当我放大并查看时,我可以看到黑色周围的一些灰色像素,作为白色的一种过渡类型。这是如何/为什么会发生的?
这是生成图像的代码:
public class DrawByPixelData extends JPanel{
Image img;
public DrawByPixelData(){
int w = 10;
int h = 10;
int pixels[] = new int[w*h];
for(int i=0;i<w*h;i++){
if(i%7==0)
pixels[i]=0xff000000;
else
pixels[i]=0xffffffff;
}
img = createImage(new MemoryImageSource(w,h,pixels,0,w));
}
public void paintComponent(Graphics g){
g.drawImage(img,0,0,this);
}
public void saveTheImage(){
SaveImageData sv = new SaveImageData();
sv.SaveImage(img);
}
还有保存图片的代码:
public class SaveImageData {
public void SaveImage(Image img){
BufferedImage image = toBufferedImage(img);
save(image, "jpg");
}
private BufferedImage toBufferedImage(Image img) {
int w = img.getWidth(null);
int h = img.getHeight(null);
int type = BufferedImage.TYPE_BYTE_BINARY;
BufferedImage dest = new BufferedImage(w,h,type);
Graphics2D g2 = dest.createGraphics();
g2.drawImage(img, 0, 0, null);
g2.dispose();
return dest;
}
private static void save(BufferedImage bi, String ext){
String fileName = "New";
File file = new File(fileName+"."+ext);
try {
ImageIO.write(bi, ext, file);
} catch (IOException e) {
System.out.println("Image didn't write: "+e.getMessage());
e.printStackTrace();
}
}
是因为我保存的格式吗?还是某种颜色模型的东西?
这是生成的图像。您也可以看到灰色像素。
谢谢。
更改为png并关闭抗锯齿后的图像:
【问题讨论】:
-
您看到那个小图像中的灰色像素,还是在浏览器中放大它时?
-
好的,所以在编辑软件中打开,并使用抗锯齿和减少损失的格式,我能够看到它们应该的像素,是的。