Delphi写出的jpg文件别人不能用!!! Delphi利用自带的JPG单元,可以方便地读入或写出jpg文件,但写出的jpg文件别的软件(如Photoshop,Word)都不能用!请问各位, 您碰到过吗? 如何解决?另外,如何调整输出Jpg图像的Quality? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把你写出的jpg文件代码列出来看看 Image1.Picture.SaveToFile('C:\1.jpg') 得到的图片可以在Word中使用,没有问题。procedure TForm1.OpenFile(const Filename: string);begin try Image1.Picture.LoadFromFile(Filename); Image1.Picture.SaveToFile('C:\1.jpg'); except on EInvalidGraphic do Image1.Picture.Graphic := nil; end; SetJPEGOptions(self);end;procedure TForm1.SetJPEGOptions(Sender: TObject);var Temp: Boolean;begin Temp := Image1.Picture.Graphic is TJPEGImage; if Temp then with TJPEGImage(Image1.Picture.Graphic). do begin PixelFormat := TJPEGPixelFormat(Self.PixelFormat.ItemIndex); Scale := TJPEGScale(Self.Scale.ItemIndex); Grayscale := Boolean(Colorspace.ItemIndex); Performance := TJPEGPerformance(Self.Performance.ItemIndex); ProgressiveDisplay := Self.ProgressiveDisplay.Checked; end; Scale.Enabled := Temp; PixelFormat.Enabled := Temp; Colorspace.Enabled := Temp; Performance.Enabled := Temp; ProgressiveDisplay.Enabled := Temp and TJPEGImage(Image1.Picture.Graphic).ProgressiveEncoding; Image1.IncrementalDisplay := IncrementalDisplay.Checked;end; 我的程序较长,但和输出有关的就是: jp.savetofile(文件名);一句话.其中jp是用 jp:=TjpegImage.Create;预先创建的.输出前没有使用jp.compreess压缩. 我输出的文件仍可以用自编程序中的 jp.loadfromfile(文件名);语句正常输入,看到的就是希望的,但用其他软件一试不行. 如果你生成的Jpg文件遵循JPG格式规范,别人当然可以读取并显示了。 要调整压缩质量,必须先转换成bmp,再设定jpg的CompressionQuality,再转成jpg bmp := TBitmap.Create; jpg := TJpegImage.Create; jpg.LoadFromFile('1.jpg'); bmp.Assign(jpg); jpg.CompressionQuality := 94; jpg.Assign(bmp); jpg.SaveToFile('2.jpg'); bmp.Free; jpg.Free;转换后的可以用ACDSEE打开 zollee2005(晓风) :谢谢你,我相信这可以解决我的第二个问题,但第一个问题... 不能读的话还是格式问题..不行的话自己按jepg格式生成文件吧 Photoshop写的JPG好象会加入自己的一些信息..我用XP的图片预览工具生的JPG..Photoshop也是不认的不过用JPG单元..没发生过类似你这样的问题..Photoshop6.0 delphi ID递增问题,求高手 哪里有进销存的图标下载? 如何从Ifix中提取数据 救急:帮我看看这份需求?关于串口协议,我该怎么做? 急啊~~~,请问怎样从一个二进制文件中读取想要的字符?? 在ADOQuery中的UpdateBatch中的问题 报表分列难题,高手请进——内详!! 我用database控件连接数据库,想请教几个数据库连接的问题 如何创建快捷方式? 像蚂蚁那样 通过ClientDateSet如何真正删除XML文件内记录. 如何运行程序的时候生成文件?
begin
try
Image1.Picture.LoadFromFile(Filename);
Image1.Picture.SaveToFile('C:\1.jpg');
except
on EInvalidGraphic do
Image1.Picture.Graphic := nil;
end;
SetJPEGOptions(self);
end;procedure TForm1.SetJPEGOptions(Sender: TObject);
var
Temp: Boolean;
begin
Temp := Image1.Picture.Graphic is TJPEGImage;
if Temp then
with TJPEGImage(Image1.Picture.Graphic). do
begin
PixelFormat := TJPEGPixelFormat(Self.PixelFormat.ItemIndex);
Scale := TJPEGScale(Self.Scale.ItemIndex);
Grayscale := Boolean(Colorspace.ItemIndex);
Performance := TJPEGPerformance(Self.Performance.ItemIndex);
ProgressiveDisplay := Self.ProgressiveDisplay.Checked;
end;
Scale.Enabled := Temp;
PixelFormat.Enabled := Temp;
Colorspace.Enabled := Temp;
Performance.Enabled := Temp;
ProgressiveDisplay.Enabled := Temp
and TJPEGImage(Image1.Picture.Graphic).ProgressiveEncoding;
Image1.IncrementalDisplay := IncrementalDisplay.Checked;
end;
bmp := TBitmap.Create;
jpg := TJpegImage.Create;
jpg.LoadFromFile('1.jpg');
bmp.Assign(jpg);
jpg.CompressionQuality := 94;
jpg.Assign(bmp);
jpg.SaveToFile('2.jpg');
bmp.Free;
jpg.Free;
转换后的可以用ACDSEE打开
谢谢你,我相信这可以解决我的第二个问题,但第一个问题...
写的JPG好象会加入自己的一些信息..
我用XP的图片预览工具生的JPG..Photoshop也是不认的
不过用JPG单元..没发生过类似你这样的问题..Photoshop6.0