It sounds like you're looking at image file data rather than buffers of pixel data. If so then I wouldn't make the assumption that the encoded bytes in two PNG files will be identical for identical images. Depending on how flexible the file format is, then particular parts of the encoded image could be written to different locations in the two files. It seems more reasonable to draw the images to compare into CGBitmapContexts configured identically and them compare the active portions (i.e., width * bytesPerPixel <= bytesPerRow) of the bitmap buffers.
As for color space to use, Apple recommends "that you use calibrated (or generic) color spaces instead of device color spaces. The colors in device color spaces can vary widely from device to device, whereas calibrated color spaces usually result in a reasonably accurate color." (https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DrawColor/Tasks/UsingColorSpaces.html <https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DrawColor/Tasks/UsingColorSpaces.html>) Steve > On Nov 16, 2017, at 6:31 PM, Rick Mann <rm...@latencyzero.com> wrote: > > I'm trying to write a unit test for some code I wrote that generates one > image from another. In the main app, the source data comes from Open CV as a > buffer of 3 byte-per-pixel elements. My code generates a CGImage. In the unit > test, I load a saved version of one of those images from a PNG file to > UIImage, get at the buffer, pass it to my code, and then compare the result > to a saved version of that same output. > > The saved version is a PNG. I load that, and then get the data buffer using > > let fiData = fi.dataProvider?.data as Data? > > I do a similar thing with the generated CGImage. Then I compare the two > buffers, byte by byte. They are similar, but contain differences (sometimes > more than I would expect). But if I save both as PNG and look at them in > Preview they look identical. > > My guess is something's happening somewhere with color correction. In my > code, I make a CG(bitmap)Context, specifying device RGB color space (should > that be generic?). I don't really know what happens to the PNGs I save and > load. > > Is there a way to ensure the bytes in the buffer are compressed and > decompressed exactly as written? _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com