在学习别人程序时遇到两个问题,特来想高手请教
这是一个批量修改图像格式的程序,有两个问题想请教一下,希望各位高手不吝赐教
如何修改,才能在保存图像时保存到其他目录而不到当前目录?就算该到其他指定目录也行
还有就是,我知道释放资源的时候用MeJpg.Free;那么这个MeJpg:=Nil;是什么意思呢?
Finally
MeJpg.Free;
MeJpg:=Nil;
MeBmp.Free;
MeBmp:=Nil;
----------------------------------
Try
MeBmp:=TBitMap.Create;
MeJpg:=TJpegImage.Create;
MeBmp.LoadFromFile(Files.Strings[I]);//载入BMP图片
MeJpg.Assign(MeBmp);
MeJpg.CompressionQuality:=100;//压缩比例
MeJpg.Compress;
MeJpg.SaveToFile(SString+'\'+Copy(ExtractFileName(Files.Strings[I])
,0,Length(ExtractFileName(Files.Strings[I]))
-4)+'.JPG');//将转换后的JPG图片存储到当前目录下
Finally
MeJpg.Free;
MeJpg:=Nil;
MeBmp.Free;
MeBmp:=Nil;
end;
[解决办法]
这就是bmp转jpg过程,SaveToFile保存文件,可以修路径参数,设置为nil就是为了后面不访问非法地址,可以判断是不是nil
[解决办法]
1. mejpg.free是释放对象(但是mejpg这个变量还是保存着对象的地址的),mejpg:=nil是说让mejpg这个变量是空值,不在保存其对象的地址。 如果你对delphi不熟的话可以简单理解成“完全的、干净的”释放mejpg对象。Mejgp.free和mejpg:=nil也可以用FreeAndNil(Mejpg)代替,效果一样,但是你要引用SysUtils单元;
2.如果要保存到其它目录的话,修改 MeJpg.SaveToFile(SString+'\'+Copy(ExtractFileName(Files.Strings[I])
,0,Length(ExtractFileName(Files.Strings[I]))这句就行了;