大家新年快乐!
小弟现在有两个问题:
1.从扫描仪中得到的图片,我采用jpg格式,但还是有200多k,我是采用ImgScan控件,选择jpg格式文件,存入SQL SERVER数据库中的image字段。能不能用什么方法压缩一下,使得它变小一点啊,我也用tmp_jpeg.CompressionQuality := 60; tmp_jpeg.Compress; 但保存为jpg文件是0字节,错在哪里? 各位大哥,你们控制扫描仪时,用ImgScan控件怎么来读取呀?
2.那位有RBuilder控件的使用说明,如果有例程源码就更好啦,多谢!我的Email :  [email protected]
先多谢了!

解决方案 »

  1.   

    我就是简单的测一下,讲一个图片load,再压缩,最后存的:
    var
       tmpJpeg : TJPEGImage;
    begin
       tmpJpeg := TJPEGImage.create();
       tmpJpeg.LoadFromFile('d:\1.jpg');
       tmpJpeg.CompressionQuality :=60;
       tmpJpeg.Compress;
       tmpJpeg.SaveToFile('d:\2.jpg');
    end;
    就这个代码,得到的2.jpg是0字节。
    还有,我扫描的照片有些大,可能是由于我得扫描分辨率大了(300dpi),后来我调成了100dpi,就只有60k了,你们一般用多少的分辨率?
    多谢大家!
      

  2.   

    我想这确实应该算DELPHI自带的JPEG组件的一个BUG,这种压缩只针对BMP转为JPG图时候好用,
    你可以改写一下,改为jpg==> BMP== >jpg
    要不然使用其它的JPEG组件。
    http://www.mwasoftware.co.uk///==================================var
       tmpJpeg : TJPEGImage;
       tmpBmp:TBitmap;
    begin
       tmpJpeg := TJPEGImage.create();
       tmpBmp:=TBitmap.Create;   tmpJpeg.LoadFromFile('d:\1.jpg');
       tmpBmp.Assign(tmpJpeg);
       tmpJpeg.Assign(tmpBmp);
       tmpJpeg.CompressionQuality :=60;
       tmpJpeg.Compress;
       tmpJpeg.SaveToFile('d:\a.jpg');
       tmpJpeg.Free;
       tmpbmp.Free;
    end;
      

  3.   

    Procedure Bmp2Jpg(const bmpfilename,jpgfilename:String;Quality:LongInt);
    var
      w_jpg:TJpegImage;
      w_bmp:TBitmap;
    begin
      //将BMP文件压缩成JPG文件
      w_bmp:=TBitmap.Create;
      w_jpg:=TJpegImage.Create;
      try
        w_bmp.LoadFromFile(bmpfilename);
        w_jpg.Assign(w_bmp);
        w_jpg.CompressionQuality:=Quality;
        w_jpg.Compress;
        w_jpg.SaveToFile(jpgfilename);
      finally
        w_bmp.Free;
        w_jpg.Free;
      end;
    end;
      

  4.   

    非常感谢大家!
    请问怎么在程序中设置扫描机扫描的默认分辨率呢,我调用imgscan1.StartScan;时,都是弹出一个设置扫描属性的窗口,其中默认的分辨率为300dpi,我如何让这个设置窗口不出现,而在程序中设置呢,各位大侠!
      

  5.   

    现在csdn好像很不稳定哦,我经常进不去,还有啊,最近一段时间,不知怎么回事不能给别人发短信的。
      

  6.   

    好象不能自己用程序设置
    不过你扫描的时候会出现一个扫描窗口(在这个窗口中有扫描,预览按钮,而且这个窗口是必须有的),那里面可以设置啊,一般设置好了,下次再扫描的时候,就不用设置了,没有必要在程序中设置啊。设置窗口不出现:
    WksImgScan1.ShowSetupBeforeScan:=False;
      

  7.   

    to wks(mex):非常感谢你!
    我将:
    WksImgScan1.ShowSetupBeforeScan:=False;
    结果是不出现设置窗口,当扫描出来的东西十分模糊,看不清,我觉得还是要弹出设置窗口的,但每次都是分辨率为300dpi,我想将其改为50dpi的,说来,这也不是很大的问题的……您有没有用过RBuilder控件,如果用过,能发过简单的例子程序给我吗?不胜感激!   [email protected]
      

  8.   

    哦,我在一位朋友那儿copy来的报表控件RBuilder,网上听说功能强大,又好使用的。  wks(mex) :您作报表一般用什么控件呢?
      

  9.   

    我用WebBrowser里面嵌入HTML做报表,效果一流,又容易控制,简直没话说。
      

  10.   

    是阿,我从网上down了FastReport,还有中文手册,这个简单易用,呵呵,不用RBuilder了,谢谢大家一直以来的支持和帮助,祝大家新年工作顺利,一切顺心!
       我揭帖了!