ImageEn保存TIF后,文件不能查看

时间:2022-04-24 07:07:04
使用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;

5 个解决方案

#1


使用GID+保存为TIFF试试。。。

#2


引用 1 楼 lqfcu2 的回复:
使用GID+保存为TIFF试试。。。


能不能将具体代码帮我写一下呢,实际上我从未接触过delphi,只是做这个的同事离职了,因为急,由我这个做B/S的人接手看一下,刚刚好不容易调通可以编译,至于具体代码这块,希望高手能够帮忙写一下,我编译看看,谢谢啊.

#3


有没有人帮忙啊

#4


确实,这个不知道要改那个参数才能够比较理想

#5


压缩格式选  jpg

#1


使用GID+保存为TIFF试试。。。

#2


引用 1 楼 lqfcu2 的回复:
使用GID+保存为TIFF试试。。。


能不能将具体代码帮我写一下呢,实际上我从未接触过delphi,只是做这个的同事离职了,因为急,由我这个做B/S的人接手看一下,刚刚好不容易调通可以编译,至于具体代码这块,希望高手能够帮忙写一下,我编译看看,谢谢啊.

#3


有没有人帮忙啊

#4


确实,这个不知道要改那个参数才能够比较理想

#5


压缩格式选  jpg