我能够存成BMP
但BMP文件太大了,请问如何存成JPG文件??

解决方案 »

  1.   

    {$APPTYPE CONSOLE}
    PROGRAM BMPtoJPG;
      USES
        Graphics,    // TBitmap
        JPEG,        // TJPEGImage
        SysUtils;    // FindFirst, FindNext, FindLast  VAR
        Bitmap      :  TBitmap;
        BMPFileName :  STRING;
        FilePath    :  STRING;
        FileSpec    :  STRING;
        i           :  INTEGER;
        JPEGFilename:  STRING;
        JPEGImage   :  TJPEGImage;
        Quality     :  INTEGER;
        ReturnCode  :  INTEGER;
        SearchRec   :  TSearchRec;
        StartIndex  :  INTEGER;BEGIN
      IF   ParamCount = 0
      THEN BEGIN
        WRITELN ('BMPtoJPG Command Line Utility');
        WRITELN;
        WRITELN ('Syntax:  BMPtoJPG [quality] filespec1 [filespec2 ...]');
        WRITELN;
        WRITELN ('Any number of input files (with wildcards) are allowed.');
        WRITELN ('Quality = 1..100 or will be treated as a filespec.');
        WRITELN ('".BMP" is appended to file specifications if absent.');
        WRITELN ('Output files will have the same name as input files but with');
        WRITELN ('quality value nnn and .JPG  extension.')  END
      ELSE BEGIN
        StartIndex := 1;
        Quality := 90;   // Default value
        TRY
          Quality := StrToInt(ParamStr(1));
          IF   (Quality >= 1) AND (Quality <= 100)
          THEN INC(StartIndex)
        EXCEPT
          // Ignore conversion error
        END;
        FOR i := StartIndex TO ParamCount DO
        BEGIN
          FileSpec := ParamStr(i);
          IF   POS('.BMP', UpperCase(ParamStr(i))) = 0
          THEN FileSpec := FileSpec + '.BMP';      FilePath := ExtractFilePath(FileSpec);
          ReturnCode := FindFirst(FileSpec, faAnyFile, SearchRec);
          WHILE  ReturnCode = 0 DO
          BEGIN        BMPFilename := FilePath + SearchRec.Name;
            WRITE (BMPFilename, ' -> ');        Bitmap := TBitmap.Create;
            TRY
              Bitmap.LoadFromFile(BMPFilename);          JPEGImage := TJPEGImage.Create;
              TRY
                JPEGImage.CompressionQuality := Quality;
                // Convert BMP to JPG
                JPEGImage.Assign(Bitmap);            // Strip off '.BMP'
                JPEGFilename := COPY(BMPFilename, 1, LENGTH(BMPFilename)-4);
                JPEGFilename := JPEGFilename + Format('%3.3d', [Quality]) + '.JPG';            JPEGImage.SaveToFile(JPEGFilename);
                WRITELN (JPEGFilename)
              FINALLY
                JPEGImage.Free
              END        FINALLY
              Bitmap.Free
            END;        ReturnCode := FindNext(SearchRec)
          END;      FindClose(SearchRec)
        END  END
    END {BMPtoJPG}.
      

  2.   

    我认为直接调用save方法更简单,就一行搞定!只要use一下jpeg就行了!
      

  3.   


    var
      MyJpeg: TJpegImage;
      Image1: TImage;
    begin
      Image1:= TImage.Create(self);
      MyJpeg:= TJpegImage.Create;
      Image1.Picture.Bitmap.LoadFromFile('c:\windows\desktop\aa.BMP');  // Load the Bitmap from a file
      MyJpeg.Assign(Image1.Picture.Bitmap);  // Assign the BitMap to MyJpeg object
      MyJpeg.CompressionQuality:=StrToInt('75');
      MyJpeg.Compress;
      MyJpeg.SaveToFile('c:\windows\desktop\test.JPG'); // Save the JPEG to Disk
    end;
    别忘了,在uses中加入jpeg