如何改变jpg文件的分辩率? ( 积分: 100 )

  • 主题发起人 主题发起人 liuind
  • 开始时间 开始时间
L

liuind

Unregistered / Unconfirmed
GUEST, unregistred user!
如主题,photoshop可以的,如72点改变为350点
 
如主题,photoshop可以的,如72点改变为350点
 
我在坛里搜了一下,发现jpg文件中是有这个信息的,可以有三种选择,无单位,点/英寸,点/厘米,但是不知道delphi中有没有这个属性?请大侠指点!!!
 
我在坛里搜了一下,发现应可以,有三种选择,无单位,点或厘米,但不知delphi有没有这个属性。
 
大侠们去哪啦?又到了休息时间了吗?只好自己顶一下啦
 
procedure SetJpgdpi(filename: string; dpix, dpiy: Integer);
const
BufferSize = 50;
DPI = 1; {inch}
DPC = 2; {cm}
var
Buffer: string;
index: Integer;
FileStream: TFileStream;
xResolution: WORD;
yResolution: WORD;
typeA: Byte;
begin
FileStream := TFileStream.Create(filename, fmOpenReadWrite);
try
SetLength(Buffer, BufferSize);
FileStream.Read(buffer[1], BufferSize);
index := Pos('JFIF' + #$00, buffer);
if index > 0 then
begin
FileStream.Seek(index + 6, soFromBeginning);
typeA := DPI;
FileStream.write(typeA, 1);
xresolution := swap(dpix);
FileStream.write(xresolution, 2);
yresolution := swap(dpiy);
FileStream.write(yresolution, 2);
end
finally
FileStream.Free;
end;
end;
 
这个我早已试过,取得的是图像的点数即640x480,为说明我所说的,我加贴上GetJpgdpi部分
procedure GetResJpg(JPGFile: string);
const
BufferSize = 50;
var
Buffer: string;
Index: integer;
FileStream: TFileStream;
HorzRes, VertRes: Word;
DP: Byte;
Measure: string;
begin
FileStream := TFileStream.Create(JPGFile,
fmOpenReadWrite);
try
SetLength(Buffer, BufferSize);
FileStream.Read(buffer[1], BufferSize);
Index := Pos('JFIF' + #$00, buffer);
if Index > 0 then
begin
FileStream.Seek(Index + 6, soFromBeginning);
FileStream.Read(DP, 1);
case DP of
1: Measure := 'DPI'; //Dots Per Inch
2: Measure := 'DPC'; //Dots Per Cm.
end;
FileStream.Read(HorzRes, 2); // x axis
HorzRes := Swap(HorzRes);
FileStream.Read(VertRes, 2); // y axis
VertRes := Swap(VertRes);
end
finally
FileStream.Free;
end;
end;

procedure SetResJpg(name: string; dpix, dpiy: Integer);
const
BufferSize = 50;
DPI = 1; //inch
DPC = 2; //cm
var
Buffer: string;
index: INTEGER;
FileStream: TFileStream;
xResolution: WORD;
yResolution: WORD;
_type: Byte;
begin
FileStream := TFileStream.Create(name,
fmOpenReadWrite);
try
SetLength(Buffer, BufferSize);
FileStream.Read(buffer[1], BufferSize);
index := POS('JFIF' + #$00, buffer);
if index > 0
then begin
FileStream.Seek(index + 6, soFromBeginning);
_type := DPI;
FileStream.write(_type, 1);
xresolution := swap(dpix);
FileStream.write(xresolution, 2);
yresolution := swap(dpiy);
FileStream.write(yresolution, 2);
end
finally
FileStream.Free;
end;
end;

最后没办法用2jpeg解决问题。但是我相信delphi应可以做到,请大家畅所欲言。
 
你到底想得到什么结果?务必将问题写清楚
 
image optimizer ActiveX 我需要,请联系luenke@hotmail.com
 
imageen里改这个很容易,当初我碰到这个问题好久没解决,用这个一下搞定了.
 
可不可以给我imageen的源码?有些东西改不了啊,比如改亮度和对比度后在imageenvect里用savetojpgfile保存不了改过的图像,只能保存改过前的,而用imageen本身带的可以保存到,但是界面难看且是英文界面,调节时预览只能看小窗口,imageenvect不能同步改,要点完ok后才可以看到。
 
有第三方控件IMAGES可以。
 
后退
顶部