Код: Выделить всё
use image;
use std::env;
fn main() {
println!("Hello, world!");
let file1 = "image.png";
let file2 = "image.jpeg";
let img1 = image::open(file1).unwrap();
let img2 = image::open(file2).unwrap();
let img1_rgb = img1.to_rgb8();
let img2_rgb = img2.to_rgb8();
let mut img1_iter = img1_rgb.pixels();
let mut img2_iter = img2_rgb.pixels();
let mut i = 0;
let length = img1_iter.len();
while i < length {
let pixel1 = img1_iter.next();
let pixel2 = img2_iter.next();
println!("Pixel 1: {:?} Pixel 2: {:?}", pixel1, pixel2);
if pixel1 != pixel2 {
println!("Difference found: {:?}, {:?}", pixel1, pixel2);
}
println!();
i += 1;
}
}
Пример Python:
Код: Выделить всё
from PIL import Image
png = Image.open("cat.png")
jpg = Image.open("cat.jpg")
pngPixels = png.load()
jpgPixels = jpg.load()
width, height = png.size
print("Width: ", width, "Height: ", height)
for x in range(width):
for y in range(height):
if pngPixels[x,y] != jpgPixels[x,y]:
print("Discrepancy at: ", x, " y: ", y)
print("png: ", pngPixels[x,y], "jpeg: ", jpgPixels[x,y])
print()
Код: Выделить всё
png = png.convert('RGB')
jpg = jpg.convert('RGB')
Из комментария Куто следует, что JPEG позволяет декодировать не на 100% точно. Википедия изменила свой список после публикации другого сообщения о переполнении стека. Учитывая это, я решил получить больше информации:
Код: Выделить всё
from PIL import Image
import numpy
png = Image.open("cat.png")
jpg = Image.open("cat.jpg")
pngPixels = png.load()
jpgPixels = jpg.load()
width, height = png.size
print("Width: ", width, "Height: ", height)
correct = 0
off_by_one = 0
off_by_two = 0
off_by_three = 0
off_by_more = 0
for x in range(width):
for y in range(height):
# print("hit")
if pngPixels[x,y] != jpgPixels[x,y]:
if numpy.all(abs(numpy.subtract(jpgPixels[x, y], pngPixels[x, y])) pixel,
None => {
println!("Error: {:?}", i);
panic!("No pixel was found!");
},
};
// println!("Pixel 1: {:?} Pixel 2: {:?}", pixel1, pixel2);
if pixel1 != pixel2 {
if ((pixel2[0] as i32 - pixel1[0] as i32).abs()
Подробнее здесь: [url]https://stackoverflow.com/questions/78796072/why-cant-i-prove-that-a-png-created-from-a-jpeg-is-identical-for-any-pixel[/url]