diff --git a/plug-ins/file-psd/psd-export.c b/plug-ins/file-psd/psd-export.c index c79c1110710ca4ab3e0785348d95c69b29364790..de92cf8676e0e43d9a3800ae2bf8fc295a3f1f73 100644 --- a/plug-ins/file-psd/psd-export.c +++ b/plug-ins/file-psd/psd-export.c @@ -1989,10 +1989,13 @@ save_data (GOutputStream *output, IFDBG(1) g_debug ("Function: save_data"); - ChanCount = (PSDImageData.nChannels + - nChansLayer (PSDImageData.baseType, - gimp_drawable_has_alpha (GIMP_DRAWABLE (PSDImageData.merged_layer)), - 0)); + if (! export_cmyk) + chan = nChansLayer (PSDImageData.baseType, + gimp_drawable_has_alpha (GIMP_DRAWABLE (PSDImageData.merged_layer)), 0); + else + chan = gimp_drawable_has_alpha (GIMP_DRAWABLE (PSDImageData.merged_layer)) ? 5 : 4; + + ChanCount = PSDImageData.nChannels + chan; imageHeight = gimp_image_get_height (image); @@ -2010,9 +2013,6 @@ save_data (GOutputStream *output, write_pixel_data (output, image, GIMP_DRAWABLE (PSDImageData.merged_layer), NULL, offset, FALSE, export_cmyk); - chan = nChansLayer (PSDImageData.baseType, - gimp_drawable_has_alpha (GIMP_DRAWABLE (PSDImageData.merged_layer)), 0); - for (iter = PSDImageData.lChannels; iter; iter = g_list_next (iter)) { IFDBG(1) g_debug ("\t\tWriting compressed channel data for channel %d", i); diff --git a/plug-ins/file-psd/psd-load.c b/plug-ins/file-psd/psd-load.c index abe59756ebf891b0944f9282a0eb774bdeae04be..9de404762bf6c117135a37a0a1b92385676a7eb4 100644 --- a/plug-ins/file-psd/psd-load.c +++ b/plug-ins/file-psd/psd-load.c @@ -2816,7 +2816,6 @@ add_merged_image (GimpImage *image, gint i; gboolean alpha_visible; gboolean alpha_channel = FALSE; - gboolean original_mode_CMYK = FALSE; GeglBuffer *buffer; GimpImageType image_type; GeglColor *alpha_rgb; @@ -2848,19 +2847,6 @@ add_merged_image (GimpImage *image, extra_channels = total_channels - 4; } - if (img_a->merged_image_only && - img_a->color_mode == PSD_CMYK && - img_a->num_layers > 0) - { - /* In this case there is no conversion. Merged image is RGB. */ - img_a->color_mode = PSD_RGB; - original_mode_CMYK = TRUE; - if (! img_a->transparency) - { - total_channels--; - } - } - if (extra_channels > 0) { if (img_a->transparency) @@ -3030,37 +3016,6 @@ add_merged_image (GimpImage *image, g_free (pixels); pixels = dst0; } - else if (original_mode_CMYK && img_a->transparency) - { - gint irow; - guchar *dst0, *dst; - guchar *data; - - dst0 = g_malloc (base_channels * layer_size * sizeof(guchar)); - dst = dst0; - data = pixels; - - /* CMYKA layers: 5 channels but merged image is RGBA - * with RGB in the first 3 layers and A in 5th layer. - * Move A to 4th layer. */ - for (irow = 0; irow < img_a->rows; irow++) - { - gint icol; - - for (icol = 0; icol < img_a->columns; icol++) - { - dst[0] = data[0]; - dst[1] = data[1]; - dst[2] = data[2]; - dst[3] = data[4]; - - dst += 4; - data += 5; - } - } - g_free (pixels); - pixels = dst0; - } gegl_buffer_set (buffer, GEGL_RECTANGLE (0, 0,