libjpeg.net icon indicating copy to clipboard operation
libjpeg.net copied to clipboard

Black pixels do not load correctly from CMYK JPEGs

Open ghelyar opened this issue 4 years ago • 0 comments

Version: https://www.nuget.org/packages/BitMiracle.LibJpeg.NET/1.5.324

I created a PNG with 16x16 blocks of Red, Green, Blue, White, Cyan, Magenta, Yellow, Black: Colours

Then converted it to a CMYK JPEG with ImageMagick:

convert test.png -colorspace cmyk test_cmyk.jpg

test_cmyk

I then used the following code to convert it to a bitmap with BitMiracle LibJpeg.Net:

using (var bitmapStream = File.Create("test.bmp"))
using (var jpegStream = File.OpenRead("test_cmyk.jpg"))
using (var jpeg = new BitMiracle.LibJpeg.JpegImage(jpegStream))
{
    jpeg.WriteBitmap(bitmapStream);
}

This results in the black pixels being loaded as transparent (RGBA of 0xffffff00) rather than black (0x000000ff). I verified this with jpeg.GetRow(y).GetAt(x).GetComponent(c) where y=31, x=63, c=(0, 1, 2, 3) -> (255, 255, 255, 0). This appears white when the alpha channel is stripped, rather than black, which is how everything else displays it.

ghelyar avatar Sep 27 '21 08:09 ghelyar