本站原创,欢迎转载;尊重他人劳动,转载时保留以下信息:
本文转自:360ITO技术社区
原文标题:解决ImageEn 读cmyk模式的JPG无法知道是cmyk模式问题
原文地址:http://www.360ito.com/article/646.html
procedure TForm1.FormCreate(Sender: TObject); begin ImageEnIO1.ParamsFromFile('C:\temp\1.jpg'); ShowMessage(ImageEnIO1.Params.FileTypeStr); end;显示结果是:
经过跟踪调试发现jpeg_read_header(cinfo, TRUE);的时候结果有cmyk,如下图:
public fIsCmyk:Boolean;
procedure TImageEnIO.ParamsFromFile(const nf: string); begin {$ifdef IEPROFILE} try IEProfileBegin('TImageEnIO.ParamsFromFile'); {$endif} try Params.fIsCmyk := false; ParamsFromFileFormat(nf, FindFileFormat(nf, true)); except fParams.fFileType := ioUnknown; end; {$ifdef IEPROFILE} finally IEProfileEnd; end; {$endif} end;修改jpegfilt中的ReadJPegStream方法,在jpeg_read_header以后对fIsCmyk赋值:
if cinfo.out_color_space = JCS_CMYK then begin IOParams.fIsCmyk := True; end;
procedure TForm1.FormCreate(Sender: TObject); begin ImageEnIO1.ParamsFromFile('C:\temp\1.jpg'); if ImageEnIO1.Params.fIsCmyk then begin ShowMessage('is CMYK'); end; ImageEnIO1.ParamsFromFile('C:\temp\2.jpg'); if not ImageEnIO1.Params.fIsCmyk then begin ShowMessage('is not CMYK'); end; end;
共有0个评论 我要评论»
网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。
1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止