Witam wszystkich.
Piszę proces na którego potrzeby potrzebuję odróżnić od Siebie formaty kolorów w ten sposób, żeby pomijać CMYKI. Na ta chwilę walidacja wygląda tak :
PdfImageObject pdfImage = new PdfImageObject((PRStream)str);
if (checkIfPdfImageObjectIsInCmyk(pdfImage)) continue;
System.Drawing.Image image = pdfImage.GetDrawingImage();
if (image == null) continue;
String temporaryImagePath = temporaryDirPath + "\\tempIn" + watermarkedImgCount + ".jpg";
image.Save(temporaryImagePath);
String outputImgPath = temporaryDirPath + "\\tempOut" + watermarkedImgCount + ".jpg";
Korzystam poniżej z ITextSharp
/** Sprawdza, czy dany obrazek w PDF jest w CMYK */
private static bool checkIfPdfImageObjectIsInCmyk(PdfImageObject pdfImage)
{
var colorSpaceInfo = PdfReader.GetPdfObject(pdfImage.Get(PdfName.COLORSPACE));
if (colorSpaceInfo != null) {
if (colorSpaceInfo.IsArray())
{
PdfArray colorSpaceValues = (PdfArray) colorSpaceInfo;
foreach (var value in colorSpaceValues)
{
if (value.IsName() && value.Equals(PdfName.DEVICECMYK))
{
return true;
}
}
}
else if (colorSpaceInfo.IsName() && colorSpaceInfo.Equals(PdfName.DEVICECMYK))
{
return true;
}
else if (colorSpaceInfo.IsName() && colorSpaceInfo.Equals(PdfName.DEFAULTCMYK))
{
return true;
}
}
return false;
}
Jednak niestety nie działa ona 100% poprawnie, ponieważ zdarza się że zdjęcia pochodzące z pdf-ów, po wgraniu do folderu, mają odwrócone kolory. Czym może to być spowodowane ? Może jest jakaś prostsza metoda do odróżniania CMYKÓW. Pozdrawiam