对jpg图像的处理(急) ( 积分: 100 )

  • 主题发起人 主题发起人 malin
  • 开始时间 开始时间
M

malin

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位高手,我想把一组jpg图片文件的象素降低,该怎么做啊?(也就是原来的jpg图片太大,我想把文件缩小,原来一张图片可能是2-3M,我想处理后变为900k左右,这个处理可能要牺牲象素,但只要看的清就可以,在acdsee中可以做到这点,我想在程序中实现这个功能。)
 
请问各位高手,我想把一组jpg图片文件的象素降低,该怎么做啊?(也就是原来的jpg图片太大,我想把文件缩小,原来一张图片可能是2-3M,我想处理后变为900k左右,这个处理可能要牺牲象素,但只要看的清就可以,在acdsee中可以做到这点,我想在程序中实现这个功能。)
 
有一种简单的办法,但只能用于缩小到原图的1/2、1/4或1/8,如下:
procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button5Click(Sender: TObject);
var
jpeg, jpeg2: TJPEGImage;
bmp: TBitmap;
begin
jpeg := TJPEGImage.Create;
jpeg2 := TJPEGImage.Create;
bmp := TBitmap.Create;
try
jpeg.LoadFromFile('C:/2.jpg');
jpeg.Scale := jsQuarter; // 设定大小,可以是jsFullSize, jsHalf, jsQuarter, jsEighth,分别表示全尺寸、1/2大小、1/4大小、1/8大小
bmp.Width := jpeg.Width;
bmp.Height := jpeg.Height;
bmp.Assign(jpeg);
jpeg2.CompressionQuality := 80; // 设定目标jpg的压缩质量
jpeg2.Assign(bmp);
jpeg2.SaveToFile('C:/22.jpg');
finally
bmp.Free;
jpeg2.Free;
jpeg.Free;
end;
end;
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3058259
这个是缩小100倍,呵呵,自己可以看着改倍数
 
各位,我想实现的功能是:以acdsee为例,打开一张图片,单击另存为,在弹出一个保存框的上面不是有个jpg选项嘛,单击进去后,有个图片的品质选项,我选择的是压缩50%,就可以了。(也就是不改变图片的大小,只改变垂直和水平分辨率)
 
那就是直接设置jpeg的压缩率阿
jpeg2.CompressionQuality := 80; // 设定目标jpg的压缩质量
你可以调节到30,那图片的大小就骤降了
acdsee调节的就是这个
 
注意要先设定jpeg2的CompressionQuality,再jpeg2.Assign(bmp);
否则得手动添加代码执行一下compress
 
islet8说的没错,我测试了一下,结果就是你所要的效果。速度还比较快。
 
谢谢各位了,结贴了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部