有没有带Canvas和LoadFromFile、SaveToFile的jpg控件。
我想找一个。谢谢。

解决方案 »

  1.   

    uses  jpeg;然后就用TImage就行了
      

  2.   

    jpeg是不可以直接画的
    所以没有canvas
    必须先assign给一个tbitmap, 画完再assign回来
    至于loadfrom等方法TjpegImage有啊procedure TForm1.Button1Click(Sender: TObject);var
     BitMap1,BitMap2 : TBitMap;
     MyFormat : Word;
    begin
       BitMap2 := TBitMap.Create;
       BitMap1 := TBitMap.Create;
    try
       BitMap1.LoadFromFile('c:\Program Files\common Files\Borland Shared\Images\Splash\256color\factory.bmp');
       BitMap2.Assign(BitMap1);     // Copy BitMap1 into BitMap2
       BitMap2.Dormant;             // Free up GDI resources
       BitMap2.FreeImage;           // Free up Memory.
       Canvas.Draw(20,20,BitMap2);  // Note that previous calls don't lose the image   BitMap2.Monochrome := true;
       Canvas.Draw(80,80,BitMap2);
       BitMap2.ReleaseHandle;       // This will actually lose the bitmap;
     finally
       BitMap1.Free;
       BitMap2.Free;
     end;
    end;
      

  3.   

    uses JPEG;var
        bm : TBitmap;
        jpg : TJPEGImage;
    begin
        bm := TBitmap.Create();
        ... //draw on bm.Canvas    jpg := TJPEGImage.Create;
        jpg.Assign(bm);
        jpg.SaveToFile('c:\test.jpg');
        jpg.Free();
        bm.Free;
    end;
      

  4.   

    我明白帖主的意思,其实在应用中经常遇到这样的情况:一个图片数据用BMP保存大概有500M,一般的PC直接用TBitmap来访问几乎是不可能的;而这么大的数据用Jpg保存可能就只有不到100M,用TJpegImage来访问的话,速度都不错,也可以用Canvas.Draw(0,0,JpegImage)来显示,但由于TJpegImage没有Canvas变量,无法用Canvas.CopyRect、StretchDraw、BitBlt等函数来操作,即你想放大你的Jpeg,你如何实现?而如果用TBitmap.Assign(Jpeg)的方式的话,也是回到老路上去了:程序同样得维护一个近500M的点位图存储空间,也是几乎不可能吃得消的。
      

  5.   

    用JPEG能节省内存???怎么会有如此不合逻辑的想法?处理JPEG只会花费更多的内存拿TJPEGImage来说,如果要利用Image将其完整显示出来,在其内部就已经完成了生成位图的操作.
      

  6.   

    Canvas是什么?逻辑上来说,有点和MFC中的CDC功能类似,就是封装GDI,关联DC和相关GDI操作.很明显GDI操作的是DIB,DDB
      

  7.   

    有些软件能处理很庞大的图像不是因为直接在内存里处理JPEG(这怎么可能?JPEG可是有损的).而是把图分块进行处理,内存里的只是当前显示的一小块区域,当然不至于耗光内存.真正对JPEG的文件数据直接进行处理的只是像图像旋转这样的操作(专业的软件是肯定要这么做的,还是因为JPEG独特的压缩方式)
      

  8.   

    JPEG不一定有损,也有无损的,医学上就用无损的
    不过delphi不支持