ТАК Я пытаюсь сделать изображение, состоящее только из черно-белых пикселей. Моя проблема в том, что когда я увеличиваю и вижу, я могу видеть некоторые серые пиксели вокруг черного, как нечто вроде переходного типа к белому. Как / почему это происходит?
Это код, который создает изображение:
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 и использования антиалиасинга: