80分求教图像处理高手关于批量更改JPG图像分辨率的问题!(80分)

  • 主题发起人 主题发起人 jieking
  • 开始时间 开始时间
J

jieking

Unregistered / Unconfirmed
GUEST, unregistred user!
用打开对话框选定N个JPG文件,把统一把选定的JPG文件分辨率DPI,更改成指定的大小,
如300,图像实现长宽不变,有什么好方法?
 
如果有人回答了这个问题,我再加50分,不过速度要快一点,不要太慢了啊.
 
让我再出一百份我也愿意的!
YHD1234朋友可以留下联系方式吗?一起讨论!
 
procedure TForm1.Button1Click(Sender: TObject);
var
i: word;
bit: Tbitmap;
jpg: TJpegImage
begin
if OpenDialog1.Execute then begin
jpg :=TJpegImage.Create;
bit:=Tbitmap.Create;
try
for i:=0 to OpenDialog1.Files.Count to begin
jpg.LoadFromFile(OpenDialog1.Files);
bit.Assign(jpg);
bit.Canvas.CopyRect(rect(0,0,bit.Width,300),bit.Canvas,rect(0,0,bit.Width,bit.Height));
jpg.Assign(bit);
jpg.SaveToFile(OpenDialog1.Files);
end;
finally
jpg.Free;
bit.Free;
end;
end;
end;
 
to:yuzk2005
感谢你的参与,不过你写的代码是把JPG转BMP的好像!,并不是去修改分辨率(DPI)
 
修改分辨率的情况下不改变原始尺寸?你拿PHOTOSHOP看看可以实现不?
改变了分辨率尺寸一定会变的.除非再裁减
 
TO cjmcn-sh,
PHOTOSHOP修改分辨率后像素是会发生改变,但是实际尺寸是不发生改变的!我有试验过了!
 
改DPI,图像的点数确实是不会变的。

LZ的要求实际就是要改文件里面一个小地方,使到图像的DPI数变化,应该在文件头的位置,要参考一下JPG文件的结构的,应该很简单,可能就是文件操作,不涉及图像问题的。
 
标准的JPEG文件分辨率信息在$E处,2个字节,读出后需要用Swap高低位交换一下。
但还有些是含有exif信息获得就非常复杂的,个人设想读入JPEG格式后再重绘到画布上再Assign到JPEG对象,这样就是标准格式然后重写$E的分辨率就OK了
 
还有更好的方法吗?或与此相关的例程吗?
 
接受答案了.
 

Similar threads

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