Что нового

[Файловая система] обработка изображений. неправильное завершение работы скрипта

johnmarshall

Осваивающий
Сообщения
192
Репутация
35
всем добрый вечер.
помогите кто-нибудь со скриптом:
Код:
#Include <GDIPlus.au3>
#Include <File.au3>

Global $W, $H
$Max = 3704
$DF = String(@ScriptDir&'\B.png')

_next()
_next1()

Func _next()
ShellExecuteWait(@ScriptDir&'\swfrender.exe', ' 1.swf -o B.png', '', '', @SW_HIDE)

_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($DF)
$H = _GDIPlus_ImageGetHeight($hImage)
$W = _GDIPlus_ImageGetWidth($hImage)
If $W > $H Then
    $H = Round($Max / $W * $H)
    $W = $Max
Else
    $W = Round($Max / $H * $W)
    $H = $Max
EndIf
	Return $W
	Return $H
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
EndFunc

Func _next1()
	For $i = 1 To 2
	ShellExecuteWait(@ScriptDir&'\swfrender.exe', String(' 1.swf -X '&$W&' -Y '&$H&' -o "'&$i&'.png"'), '', '', @SW_HIDE)
	Sleep(10)
	FileDelete($DF)
Next
EndFunc

Exit

и в архиве тулзы.

скрипт обрабатывает изображение, но в конце не удаляет промежуточное, из которого берет размеры для масштаба.
что делать, не знаю...
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
damien2008

Нельзя 2 раза подряд в функции ставить
Код:
Return $W
    Return $H


И они поставлены перед тем как сделать _GDIPlus_ImageDispose, то есть освобождение файла отсутствует.

Код:
#include <GDIPlus.au3>
#include <File.au3>

Global $W, $H
$Max = 704
$DF = @ScriptDir & '\B.png'

_next()
_next1()

Func _next()
	RunWait(@ScriptDir & '\swfrender.exe 1.swf -o ' & $DF, '', '', @SW_HIDE)

	_GDIPlus_Startup()
	$hImage = _GDIPlus_ImageLoadFromFile($DF)
	$H = _GDIPlus_ImageGetHeight($hImage)
	$W = _GDIPlus_ImageGetWidth($hImage)
	If $W > $H Then
		$H = Round($Max / $W * $H)
		$W = $Max
	Else
		$W = Round($Max / $H * $W)
		$H = $Max
	EndIf
	_GDIPlus_ImageDispose($hImage)
	_GDIPlus_Shutdown()
EndFunc

Func _next1()
	For $i = 1 To 2
		RunWait(@ScriptDir & '\swfrender.exe 1.swf -X ' & $W & ' -Y ' & $H & ' -o "' & @ScriptDir & '\' & $i & '.png"', '', '', @SW_HIDE)
		Sleep(10)
		FileDelete($DF)
	Next
EndFunc


Убрал ненеужную функцию String в данном скрипте, ShellExecuteWait сменил на RunWait
 
Верх