一个被打开的文件无法关闭,请高手帮忙看下,代码不长 [已解决]
本帖最后由 z761003 于 2012-2-29 09:06 编辑请高手帮忙看一下,以下是一段将BMP图片转为JPG格式的图片,当转好后,程序没退出时,我想删除这个BMP,可发现这个BMP 是被打开的,无法删掉,请问如何才能在不退出程序的前提下让这个BMP可以删除#include <GDIPlus.au3>
$TParam = _GDIPlus_ParamInit(1);初始化编码器的参数列表
$Datas = DllStructCreate("int Quality")
DllStructSetData($Datas, "Quality", 50);创建 C/C++ 数据结构供 DllCall 使用
_GDIPlus_ParamAdd($TParam, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, DllStructGetPtr($Datas));添加值到编码器参数列表
$Param = DllStructGetPtr($TParam);返回数据结构的一个元素
If IsDllStruct($Param) Then $Param = DllStructGetPtr($TParam)
_GDIPlus_Startup()
$image = _GDIPlus_ImageLoadFromFile("c:\1.BMP");创建基于文件的图像对象
$clsid = _GDIPlus_EncodersGetCLSID("JPG");返回指定图像文件类型的编码器 CLSID
_GDIPlus_ImageSaveToFileEx($image, "c:\1.JPG", $clsid,$Param);将图像保存到文件
_GDIPlus_Shutdown();清理微软 Windows GDI+ 使用的资源
FileDelete ("c:\1.BMP")
Sleep(10000) 试试在删除之前加上
$handle = FileOpen("c:\1.JPG", 0)
FileClose($handle) 回复 2# lanfengc
删不了哦 回复 3# z761003
哦,你没有释放位图对象。 加上这句在 释放GDI资源前面就可以了
_GDIPlus_BitmapDispose($image) 加上您的那句,还是不行,用函数filedelete()删不掉 #include <GDIPlus.au3>
$TParam = _GDIPlus_ParamInit(1);初始化编码器的参数列表
$Datas = DllStructCreate("int Quality")
DllStructSetData($Datas, "Quality", 50);创建 C/C++ 数据结构供 DllCall 使用
_GDIPlus_ParamAdd($TParam, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, DllStructGetPtr($Datas));添加值到编码器参数列表
$Param = DllStructGetPtr($TParam);返回数据结构的一个元素
If IsDllStruct($Param) Then $Param = DllStructGetPtr($TParam)
_GDIPlus_Startup()
$image = _GDIPlus_ImageLoadFromFile("c:\1.BMP");创建基于文件的图像对象
$clsid = _GDIPlus_EncodersGetCLSID("JPG");返回指定图像文件类型的编码器 CLSID
_GDIPlus_ImageSaveToFileEx($image, "c:\1.JPG", $clsid,$Param);将图像保存到文件
_GDIPlus_ImageDispose($image);释放图像对象
_GDIPlus_Shutdown();清理微软 Windows GDI+ 使用的资源
FileDelete("c:\1.BMP") 回复 1# z761003
备注
调用 _GDIPlus_Shutdown 前, 必须处理掉所有 GDI+ 对象. _GDIPlus_ImageDispose() 先 谢谢2楼,6楼,8楼,,,可以了!!!我次序调错了,所以没删掉,谢谢评委,谢谢嘉宾,谢谢台下每一位,谢谢大家{:face (301):}
页:
[1]