-2
该代码编译时没有错误,但图像是用0字节生成的。有人能帮助我吗?压缩图像的过程(bmp到jpg)
这是为将图像转换的过程:
procedure CompressImage(ImageFrom: TBitmap; ImageTo: TJPEGImage; Quality: integer);
var
bmp: TBitmap;
jpeg: TJPEGImage;
stream: TMemoryStream;
begin
bmp:=TBitmap.Create;
jpeg:=TJPEGImage.Create;
stream:=TMemoryStream.Create;
try
bmp.Assign(ImageFrom);
jpeg.Assign(bmp);
jpeg.PixelFormat:=jf24bit; // or jf8bit
jpeg.CompressionQuality:=Quality;
jpeg.ProgressiveDisplay:=False;
jpeg.ProgressiveEncoding:=False;
jpeg.Compress;
jpeg.SaveToStream(stream);
ImageTo.LoadFromStream(stream);
finally
bmp.Free;
jpeg.Free;
stream.Free;
end;
end;
这是我如何调用它:
procedure TForm1.FormCreate(Sender: TObject);
var
imageBMP: TBitmap;
imageJPG: TJPEGImage;
begin
imageBMP:=TBitmap.Create;
imageJPG:=TJPEGImage.Create;
imageBMP.LoadFromFile('image.bmp');
CompressImage(imageBMP, imageJPG, 50);
imageJPG.SaveToFile('image.jpg');
imageBMP.Free;
imageJPG.Free;
end;
文件 'image.jpg的' 与0字节生成。
尝试添加行stream.position:= 0;之间jpeg.SaveToStream(流)和ImageTo.LoadFromStream(流) – Jason
WOWWWWW !!!!谢谢贾森!成功了! – user3015502
“太本地化”关闭选项在哪里?那已被删除?由于标题和问题与实际问题无关,所以有人不太可能在未来发现这个问题有用。 – jpfollenius