function TMainForm.BmpToJpeg(src2, dst1: String): Boolean;
var
      Bmp:TBitMap1;
      Jpeg:TJpegImage1;
begin
    try
       Bmp:=TBitMap1.Create;   Jpeg:=TJpegImage1.Create;
       Bmp.LoadFromFile(src2);
       Jpeg.CompressionQuality:=75;
       Jpeg.Assign(Bmp);
       Jpeg.SaveToFile(dst1);
    finally
       Bmp.free;   Jpeg.Free;
    end;
end;
procedure TMainForm.Button3Click(Sender: TObject);
var
    fld1, dst1 : string;
    //i : Integer;
begin
    fld1 := BrowseForFolder('Select Destination Folder')+'\';
    if DirectoryExists(fld1) then begin
        Screen.Cursor := crHourGlass;
        //if not multi then begin
            dst1 := fld1 + ExtractFileName(src);
            if src = dst1 then dst1 := fld1+'Copy '+ExtractFileName(src);
            BmpToJpeg(src,dst1);
            //JResize(src,dst);        ShowMessage('Image change!');
        //ggProgress.Progress := 0;
    end;
end;end.声明为 function BmpToJpeg(src2, dst1: String):Boolean;
procedure Button3Click(Sender: TObject);
错误显示的是function TMainForm.BmpToJpeg(src2, dst1: String): Boolean;声明有误,怎么办啊?谢谢了.

解决方案 »

  1.   

    BmpToJpeg函数没有返回值,要么你就改成过程。
      

  2.   

    Jpeg:TJpegImage1
    也可改成Jpeg:TJpegImage
      

  3.   

    改为
    function TMainForm.BmpToJpeg(src2, dst1: String): Boolean;
    var
          Bmp:TBitMap1;
          Jpeg:TJpegImage1;
    begin
        try
           Bmp:=TBitMap1.Create;   Jpeg:=TJpegImage1.Create;
           Bmp.LoadFromFile(src2);
           Jpeg.CompressionQuality:=75;
           Jpeg.Assign(Bmp);
           Jpeg.SaveToFile(dst1);
        finally
           Bmp.free;   Jpeg.Free;
        end;
     result := true;
    end;程序可以运行,但是在按键时,根本就没有转换为jpeg,而且鼠标总是在等待状态,是什么原因那 ?
      

  4.   

    加两句话试试     
           Jpeg.Assign(Bmp);
           Jpeg.JPEGNeeded;
           Jpeg.Compress;
           Jpeg.SaveToFile(dst1);
      

  5.   

    你看看Jpeg的SIZE,是不是0,如果是0的话,就是没有装进来
      

  6.   

    不是0,转换后,仍然是显示.bmp的后缀,但是图片大小明显小了,我认为它转换了那就是名字没有换,还用原来的名字,大侠们,怎么把名字改掉啊,就是变为后缀为.jpg的名字?谢谢!
      

  7.   

    但是用我的转换后的图片比用其他软件转换后成的jpeg图片要小了几十kb,是为什么啊 
    我说是在代码里怎么转换,比如原来是1.bmp,转换后自动存的名字为1.jpg.怎么用代码实现啊?
      

  8.   

    Jpeg.CompressionQuality:=75;这个可以改变压缩率,不同的值生成的大小也不一样
      

  9.   

    [Error] Main.pas(353): Declaration expected but end of file found
    是什么错误啊 ?
      

  10.   

    压缩率不是越大越好,CompressionQuality数值越小,压缩率越高,但图片会有更大的失真。
    70-80之间就差不多了,不要再乱调整了。
      

  11.   

    function TMainForm.BmpToJpeg(src2, dst1: String): Boolean;
    var
          Bmp: TBitMap;
          Jpeg: TJpegImage;
    begin
        try
           Bmp:=TBitMap.Create;
           Jpeg:=TJpegImage.Create;
           Bmp.LoadFromFile(src2);
           Jpeg.Assign(Bmp);
           Jpeg.SaveToFile(ChangeFileExt(dst1,'.jpg'));
        finally
           Bmp.free;
           Jpeg.Free;
        end;
        result := true;
    end;
    procedure TMainForm.Button3Click(Sender: TObject);
    var
        fld1, dst1 : string;
        //i : Integer;
    begin
        fld1 := BrowseForFolder('Select Destination Folder')+'\';
        if DirectoryExists(fld1) then begin
            Screen.Cursor := crHourGlass;
            dst1 := fld1 + ExtractFileName(src);
            if src = dst1 then dst1 := fld1+'Copy '+ExtractFileName(src);
            BmpToJpeg(src,dst1);
            ShowMessage('Image change!');
            ggProgress.Progress := 0;
        end;
    end;
    function TMainForm.JpegToBmp(src3, dst2: String): Boolean;
    var
          Bmp: TBitMap;
          Jpeg: TJpegImage;
    begin
        try
           Bmp:=TBitMap.Create;
           Jpeg:=TJpegImage.Create;
           Jpeg.LoadFromFile(src3);
           Bmp.Assign(Jpeg);
           Bmp.SaveToFile(ChangeFileExt(dst2,'.bmp'));
        finally
           Bmp.free;
           Jpeg.Free;
        end;
        result := true;
    end;
    procedure TMainForm.Button4Click(Sender: TObject);
    var
        fld2, dst2 : string;
    begin
        fld2 := BrowseForFolder('Select Destination Folder')+'\';
        if DirectoryExists(fld2) then begin
            Screen.Cursor := crHourGlass;
            dst2 := fld2 + ExtractFileName(src);
            if src = dst2 then dst2 := fld2+'Copy '+ExtractFileName(src);
            JpegToBmp(src,dst2);
            ShowMessage('Image change!');
            ggProgress.Progress := 0;
        end;
    end;
    为社么总是显示[Error] Main.pas(353): Declaration expected but end of file found
    啊 
    谢谢.我改成75了.
      

  12.   

    可能错误与这些代码无关,是不是这个单元最后没有“end.”
      

  13.   

    如果不写Jpeg.CompressionQuality:=75;那么默认的压缩率是多少啊 ?谢谢
      

  14.   

    哦 忘了 Screen.Cursor := crDefault;谢谢
      

  15.   

    procedure TMainForm.Button4Click(Sender: TObject);
    var
        fld2, dst2 : string;
    begin
       try
        fld2 := BrowseForFolder('Select Destination Folder')+'\';
        if DirectoryExists(fld2) then begin
            Screen.Cursor := crHourGlass;
            dst2 := fld2 + ExtractFileName(src);
            if src = dst2 then dst2 := fld2+'Copy '+ExtractFileName(src);
            JpegToBmp(src,dst2);
            ShowMessage('Image change!');
            ggProgress.Progress := 0;
        end;
       finally
          Screen.Cursor := crDefault;
       end;
    end;
      

  16.   

    procedure TMainForm.Button4Click(Sender: TObject);
    var
        fld2, dst2 : string;
    begin    fld2 := BrowseForFolder('Select Destination Folder')+'\';
        if DirectoryExists(fld2) then begin
            Screen.Cursor := crHourGlass;
            try
            dst2 := fld2 + ExtractFileName(src);
            if src = dst2 then dst2 := fld2+'Copy '+ExtractFileName(src);
            JpegToBmp(src,dst2);
            ShowMessage('Image change!');
            ggProgress.Progress := 0;
            finally
             Screen.Cursor := crDefault;
            end;
        end;end;
      

  17.   

    谢谢了 
    刚接触delphi.什么都不会.呵呵
      

  18.   

    把最大化或最小化按钮禁止就好了,设置iconstyle属性