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