使用ImageEn将扫描的文件存为TIF格式时,原来由于保存的文件SIZE太大(20M以上),于是将原来的ImageEnMView1.MIO.SaveToFile(FileName)方法,改为ImageEnmview1.MIO.SaveToFileTIFF(FileName),这样文件明显变小了,才一两百K,同时使用Microsoft Office Document Imaging可以打开查看,但是用其它图像软件都不能查看,包括window的图片浏览器(Windows Picture and Fax Viewer)却不能查看,问题肯定还是出在保存上面,因为原来的ImageEnMView1.MIO.SaveToFile(FileName)虽然保存很大,但是起码各种软件可以打开查看.各位高手帮忙看一下啊,其实最终的目的就是保存文件要小,各软件均可查看就可以了,保存文件代码如下:
function TSTSImageControl.Save(const FileName: WideString): WordBool;
var
i:integer;
begin
result:=false;
try ScannerSet.CompressionType:=4; SaveImageBitmap;
for i:=0 to ImageEnMView1.MIO.ParamsCount-1 do
begin
if uppercase(ExtractFileExt(FileName))='.TIF' then
begin
case ScannerSet.CompressionType of
0:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_CCITT1D;
1:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_G3FAX1D;
2:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_G3FAX2D;
3:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_G4FAX;
4:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_JPEG;
else
ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_JPEG;
end; end else
begin
ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_JPEG;
//ImageEnMView1.MIO.Params[i].TIFF_JPEGQuality:=ScannerSet.JPEGQuality;
end;
ImageEnMView1.MIO.Params[i].DpiX:=ScannerSet.XImageResolution;
ImageEnMView1.MIO.Params[i].DpiY:=ScannerSet.YImageResolution; if (ImageEnMView1.MIO.Params[i].DpiX>0)and(ImageEnMView1.MIO.Params[i].DpiY>0) then
begin
ImageEnMView1.MIO.Params[i].Width:=
round(ImageEnMView1.MIO.Params[i].DpiX*self.ScannerSet.ImageWidth*Const_InchCm);
ImageEnMView1.MIO.Params[i].height:=
round(ImageEnMView1.MIO.Params[i].DpiY*self.ScannerSet.ImageHeight*Const_InchCm);
end else
begin
ImageEnMView1.MIO.Params[i].DpiX:=400;
ImageEnMView1.MIO.Params[i].DpiY:=400;
ImageEnMView1.MIO.Params[i].Width:=
round(400*self.ScannerSet.ImageWidth*Const_InchCm);
ImageEnMView1.MIO.Params[i].height:=
round(400*self.ScannerSet.ImageHeight*Const_InchCm);
end;
end;
ImageEnMView1.MIO.Update;
//ImageEnMView1.MIO.SaveToFile(FileName);
ImageEnmview1.MIO.SaveToFileTIFF(FileName);
except
exit;
end;
result:=true;
end;
function TSTSImageControl.Save(const FileName: WideString): WordBool;
var
i:integer;
begin
result:=false;
try ScannerSet.CompressionType:=4; SaveImageBitmap;
for i:=0 to ImageEnMView1.MIO.ParamsCount-1 do
begin
if uppercase(ExtractFileExt(FileName))='.TIF' then
begin
case ScannerSet.CompressionType of
0:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_CCITT1D;
1:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_G3FAX1D;
2:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_G3FAX2D;
3:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_G4FAX;
4:ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_JPEG;
else
ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_JPEG;
end; end else
begin
ImageEnMView1.MIO.Params[i].TIFF_Compression:=ioTIFF_JPEG;
//ImageEnMView1.MIO.Params[i].TIFF_JPEGQuality:=ScannerSet.JPEGQuality;
end;
ImageEnMView1.MIO.Params[i].DpiX:=ScannerSet.XImageResolution;
ImageEnMView1.MIO.Params[i].DpiY:=ScannerSet.YImageResolution; if (ImageEnMView1.MIO.Params[i].DpiX>0)and(ImageEnMView1.MIO.Params[i].DpiY>0) then
begin
ImageEnMView1.MIO.Params[i].Width:=
round(ImageEnMView1.MIO.Params[i].DpiX*self.ScannerSet.ImageWidth*Const_InchCm);
ImageEnMView1.MIO.Params[i].height:=
round(ImageEnMView1.MIO.Params[i].DpiY*self.ScannerSet.ImageHeight*Const_InchCm);
end else
begin
ImageEnMView1.MIO.Params[i].DpiX:=400;
ImageEnMView1.MIO.Params[i].DpiY:=400;
ImageEnMView1.MIO.Params[i].Width:=
round(400*self.ScannerSet.ImageWidth*Const_InchCm);
ImageEnMView1.MIO.Params[i].height:=
round(400*self.ScannerSet.ImageHeight*Const_InchCm);
end;
end;
ImageEnMView1.MIO.Update;
//ImageEnMView1.MIO.SaveToFile(FileName);
ImageEnmview1.MIO.SaveToFileTIFF(FileName);
except
exit;
end;
result:=true;
end;
解决方案 »
- 大侠图像处理救教呀
- 在程序中创建Access表时,字段名与字段类型要相同时怎么处理呀
- 用API实现的窗体并加上一些简单的功能,不用DELPHI的VCL
- 谁有delphi api 函数帮助(要中文的)
- 这两天花钱如流水,只能问这一个问题了!打印操作中的dpi,canvas计算、添加自定义纸。
- 如何动态建立一个数据连接,然后用户dbgrid显示出来,要简单明了!在线等。。谢了!!
- 哪位朋友能告诉我如何读取硬盘序列号
- DBEDIT能不能不连数据源,象EDIT那样输入文本?谢谢
- delphi5、odbc、sql2000的问题
- 热点问题,如何在IE工具条中增加自定义按钮或菜单
- delphi调用webservice出错,急,在线等~~~~
- 用thread类实现多个thread obj共写一个数据集却报错
能不能将具体代码帮我写一下呢,实际上我从未接触过delphi,只是做这个的同事离职了,因为急,由我这个做B/S的人接手看一下,刚刚好不容易调通可以编译,至于具体代码这块,希望高手能够帮忙写一下,我编译看看,谢谢啊.