SVN commit 544316 by cgilles:
digikam from trunk : DIMg::TIFFLoader::save() bugfix : Always writting ICC profile tag before to write image data, else the result is impredictible (sometime icc profile is embedded, sometime no)... CCMAIL: [hidden email], [hidden email] M +1 -1 jpegloader.cpp M +1 -1 pngloader.cpp M +19 -20 tiffloader.cpp --- trunk/extragear/graphics/digikam/libs/dimg/loaders/jpegloader.cpp #544315:544316 @@ -484,7 +484,7 @@ QByteArray profile_rawdata = imageICCProfil(); - if (profile_rawdata.data() != 0) + if (!profile_rawdata.isEmpty()) { write_icc_profile (&cinfo, (JOCTET *)profile_rawdata.data(), profile_rawdata.size()); } --- trunk/extragear/graphics/digikam/libs/dimg/loaders/pngloader.cpp #544315:544316 @@ -592,7 +592,7 @@ QByteArray profile_rawdata = imageICCProfil(); - if (profile_rawdata.data() != 0) + if (!profile_rawdata.isEmpty()) { png_set_iCCP(png_ptr, info_ptr, "icc", PNG_COMPRESSION_TYPE_BASE, profile_rawdata.data(), profile_rawdata.size()); } --- trunk/extragear/graphics/digikam/libs/dimg/loaders/tiffloader.cpp #544315:544316 @@ -420,11 +420,27 @@ TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, imageBitsDepth()); TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(tif, 0)); - if (observer) - observer->progressInfo(m_image, 0.1); + // ------------------------------------------------------------------- + // Write meta-data Tags contents. + + for (int t = DImg::TIF_TAG_ARTIST; t <= DImg::TIF_TAG_TARGETPRINTER; t++) + setTiffTextTag(tif, t); + + // ------------------------------------------------------------------- + // Write ICC profil. + + QByteArray profile_rawdata = imageICCProfil(); + + if (!profile_rawdata.isEmpty()) + { + TIFFSetField (tif, TIFFTAG_ICCPROFILE, (uint32)profile_rawdata.size(), (uchar *)profile_rawdata.data()); + } // ------------------------------------------------------------------- // Write image data + + if (observer) + observer->progressInfo(m_image, 0.1); uint8 *buf=0; uchar *pixel; @@ -536,26 +552,9 @@ } _TIFFfree(buf); - - // ------------------------------------------------------------------- - // Write meta-data Tags contents. - - for (int t = DImg::TIF_TAG_ARTIST; t <= DImg::TIF_TAG_TARGETPRINTER; t++) - setTiffTextTag(tif, t); + TIFFClose(tif); // ------------------------------------------------------------------- - // Write ICC profil. - - QByteArray profile_rawdata = imageICCProfil(); - - if (profile_rawdata.data() != 0) - { - TIFFSetField (tif, TIFFTAG_ICCPROFILE, (uint32)profile_rawdata.size(), (uchar *)profile_rawdata.data()); - } - - // ------------------------------------------------------------------- - - TIFFClose(tif); if (observer) observer->progressInfo(m_image, 1.0); _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
Free forum by Nabble | Edit this page |