最近应朋友之邀开发一个图片管理数据库。 其中在处理JPEG图片时遇到很大问题,现将这个过程记录下来,一为总结存档,二为其它遇到此问题的朋友提供参考。
一、系统目的、问题。
该图片系统采用C/S模式开发,用户将本地的JPEG图片文件提交到后台SQL Server2000数据库中保存,以后用户可以从此数据库中查阅、显示图片。客户端用C++Builder(以下简称BC)开发,初期开发、测试后没有问题。但实际应用时发现图片显示不正常。后反复调试、咨询客户发现问题出在JPEG格式上。JPEG文件中有颜色模式差别,RGB格式的在程序中显示正常,但CMYK格式的图片显示就不正常,但CMYK是印刷行业采用的,原始图片数据不能转变成RGB格式,否则在印刷中无法应用。故如何显示CMYK颜色模式的JPEG图片出现问题。因为程序中以表格形式显示内容,其中一个Cell绘制图形,所以不能用第三方控件解决这个问题、只能自己绘该图形。
二、解决方案
1)CMYK颜色JPEG文件的显示。
1.1、方法一、初期我们在网上查找下载了Intel的IJL15库,使用该库提供的函数,可以将JPEG数据解压为Bitmap图,然后绘制该Bitmap图。其中的主要过程是:
a)BC不能直接使用IJL库,首先要转化。过程是
Step1:拷贝IJL15.DLL到开发目录下
Step2:在命令行方式下进入开发目录,执行BC的implib,格式为:
implib IJL15BC.LIB IJL15.DLL
其中,IJL15BC.LIB是要生成的库,在BC程序中可以使用。凡是BC程序想用适合VC使用的DLL都可以采用这个办法。
Step3:在程序主模块、或使用IJL库的模块中加入:
#pragma comment(lib, "IJL15BC.LIB")
该语句只需在一个地方加一次即可
Step4:使用IJL15.h时按如下格式
#pragma option -b