Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Лишняя точка в конечном файле (http://forum.oszone.net/showthread.php?t=293402)

Tosyk 03-01-2015 02:14 2451124

Лишняя точка в конечном файле
 
Скрипт извлекает из картинок альфа-канал в файл .jpg с добавлением перед расширением _a. Но почему-то ставит лишнюю точку.
Т.е. имеем файл kartinka.png, после преобразований имя получается kartinka._a.jpg, а должно получиться kartinka_a.jpg. Подскажите как это исправить.

Код:

#Include <File.au3>

AutoItSetOption("MustDeclareVars", 1)

Local $i
Local $sSourceFile, $sDestFile, $sDestFileJPG
Local $sDrive, $sFolder, $sFileName, $sExt

Local $sPattern = "\.(?i:tga|jpg|bmp|dds|png|tif|jpeg)"


If $CmdLine[0] <> 0 Then
        If FileInstall("convert.exe", @TempDir & "\", 1) = 1 Then
                ProgressOn("Converting", "", "0%")

                For $i = 1 To $CmdLine[0]
                        $sSourceFile = $CmdLine[$i]

                        ProgressSet(($i / $CmdLine[0]) * 100, $sFileName & $sExt, String(Round($i / $CmdLine[0] * 100, 1)) & "%")

                        If FileExists($sSourceFile) Then
                                _PathSplit($sSourceFile, $sDrive, $sFolder, $sFileName, $sExt)

                                If StringRegExp($sExt, "\A" & $sPattern & "\z", 0) = 1 Then
                                        $sDestFileJPG = _PathMake($sDrive, $sFolder, $sFileName, "_a.jpg")
                                        $sDestFile = _PathMake($sDrive, $sFolder, $sFileName, ".png")

                                        RunWait("""" & @TempDir & "\convert.exe"" """ & $sSourceFile & """ -channel A -separate -quality 100 -colorspace sRGB """ & $sDestFileJPG & """", @TempDir, @SW_HIDE)
                                        RunWait("""" & @TempDir & "\convert.exe"" """ & $sSourceFile & """ -alpha off -colorspace sRGB """ & $sDestFile & """", @TempDir, @SW_HIDE)
                                Else
                                        ConsoleWriteError("Extension of file [" & $sSourceFile & "] is [" & $sExt & "] and not in [" & $sPattern & "]" & @CRLF)
                                EndIf
                        Else
                                ConsoleWriteError("File [" & $sSourceFile & "] not found" & @CRLF)
                        EndIf
                Next

                ProgressSet(100 , "Converting complete", "100%")

                If FileExists(@TempDir & "\convert.exe") = 1 Then
                        FileDelete(@TempDir & "\convert.exe")
                EndIf

                Sleep(1000)
                ProgressOff()
        Else
                ConsoleWriteError("Can't extract [convert.exe] into [" & @TempDir & "]" & @CRLF)
        EndIf
Else
        MsgBox(0, "Usage", @ScriptName & " <file>")
        ConsoleWrite("Usage: " & @ScriptName & " <file>" & @CRLF)
EndIf

Exit(0)


Creat0R 03-01-2015 02:53 2451134

Код:

$sDestFileJPG = _PathMake($sDrive, $sFolder, $sFileName & "_a", "jpg")
В _PathMake убирается точка в начале, если её нет, то функция её добавляет ("_a.jpg" трактуется как "._a.jpg").

Tosyk 03-01-2015 13:49 2451246

Creat0R, классно, спасибо!


Время: 07:58.

Время: 07:58.
© OSzone.net 2001-