X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=images%2Fio-libmagick.c;h=60d3615941c0330fa7fa833670ea394f5ef54026;hb=5e52d50a1ae65de7545213b433e06e993e2d24bf;hp=cdf58048ced1d69946e6ce3d11dc28b3c15cb3da;hpb=f079adbc69c1521039ee8c6b3aaac5eb209889cd;p=libucw.git diff --git a/images/io-libmagick.c b/images/io-libmagick.c index cdf58048..60d36159 100644 --- a/images/io-libmagick.c +++ b/images/io-libmagick.c @@ -170,8 +170,11 @@ libmagick_read_data(struct image_io *io) /* Prepare the image */ struct image_io_read_data_internals rdi; uns read_flags = io->flags; + uns cs = read_flags & IMAGE_COLOR_SPACE; + if (cs != COLOR_SPACE_GRAYSCALE && cs != COLOR_SPACE_RGB) + read_flags = (read_flags & ~IMAGE_COLOR_SPACE & IMAGE_PIXEL_FORMAT) | COLOR_SPACE_RGB; if ((read_flags & IMAGE_IO_USE_BACKGROUND) && !(read_flags & IMAGE_ALPHA)) - read_flags = (read_flags | IMAGE_ALPHA) & IMAGE_CHANNELS_FORMAT; + read_flags = (read_flags & IMAGE_CHANNELS_FORMAT) | IMAGE_ALPHA; if (unlikely(!image_io_read_data_prepare(&rdi, io, rd->image->columns, rd->image->rows, read_flags))) { libmagick_destroy_read_data(rd); @@ -279,7 +282,8 @@ libmagick_write(struct image_io *io) info->colorspace = RGBColorspace; break; default: - ASSERT(0); + IMAGE_ERROR(io->context, IMAGE_ERROR_WRITE_FAILED, "Unsupported color space."); + goto err; } switch (io->format) {