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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Есть папка с большим количеством jpeg файлов, надо сохранить файлы как .bmp (http://forum.oszone.net/showthread.php?t=151932)

evg64 30-09-2009 19:27 1231399

Есть папка с большим количеством jpeg файлов, надо сохранить файлы как .bmp
 
Добрый день! Есть папка с большим количеством jpeg файлов, надо копирнуть папку и сохранить файлы как .bmp.
Я столкнулся с проблемой при решении такой задачи. Поначалу думал сделать так:
1) копирнуть папку
2) вызвать paint через $obj=objcreate()
3) в $obj по очереди подгружать файлы и сохранять их как бмп.
Но мне сказали, что пэинт нельзя создать через objcreate(), другого варианта решения не вижу... а он наверняка есть :)

Sp01LeR 30-09-2009 20:15 1231429

Чтоб не терзать винду, для конверта и изменения граф. файлов можно(и даже нужно) использовать сторонние утилиты, например эту

Iska 30-09-2009 23:58 1231538

Если предпочтёте работать через Automation (например, если конвертирование — лишь часть большего проекта), то я бы предложил обратить внимание на GFL SDK - Library to load images and photos easily.
читать дальше »
Со страницы загрузки лучше всего брать полную версию GFL SDK (из-за большего количества материала) — компонент GFLAx (впрочем, доступный там же для загрузки и отдельно) в неё входит. Простой пример конвертации одного файла из «*.jpg» в «*.bmp»:
Код:

AutoItSetOption("MustDeclareVars", 1)

Local Const $AX_BMP = 4

Local $objGflAx = ObjCreate("GflAx.GflAx")

With $objGflAx
        .LoadBitmap(@DocumentsCommonDir & "\Мои рисунки\Образцы рисунков\Зима.jpg")
        .SaveFormat = $AX_BMP
        .SaveBitmap("c:\Temp\Converted.bmp")
EndWith

$objGflAx = 0

Exit(0)

Конечно, возможностей у библиотеки куда как больше, нежели простая конвертация; почитать об объектной модели можно будет после установки в файле «GflAx-Help.chm», некоторые примеры работы можно посмотреть здесь: Серый форум / WSH: разбиение/склейка изображений, Серый форум / vbscript: вывод текста поверх обоев Рабочего стола, ну и, конечно, банальным поиском в Google.

Замечание 1: справедливости ради надо отметить, что, поскольку AutoIt умеет напрямую работать с DLL, можно не использовать Automation, а работать сразу с функциями соответствующей библиотеки «libgflXXX.dll» или непосредственно, так сказать, из коробки — с «gdiplus.dll». Однако сие гораздо сложнее.

Замечание 2: кстати сказать: и вышеуказанный Sp01LeR'ом ImageMagick тоже умеет работать не только в качестве утилиты командной строки, но и в качестве сервера Automation; однако же, на мой взгляд, к сожалению, реализовано там сие очень неудобно — а именно как прямой аналог параметров командной строки (справедливо для версии «ImageMagick-6.3.4-Q16»; возможно, что в новых версиях ситуация поменялась, но вряд ли).

amel27 01-10-2009 05:20 1231688

Цитата:

Цитата evg64
Есть папка с большим количеством jpeg файлов, надо копирнуть папку и сохранить файлы как .bmp »

где-то так:
Код:

#include <GDIPlus.au3>

$sJPGFile = "C:\TEST\PIC.JPG"
$sBMPFile = "C:\TEST\PIC.BMP"

_GDIPlus_Startup()

$hImage = _GDIPlus_ImageLoadFromFile($sJPGFile)
$CLSID  = _GDIPlus_EncodersGetCLSID("BMP")
$iRes  = _GDIPlus_ImageSaveToFileEx($hImage, $sBMPFile, $CLSID)

_GDIPlus_Shutdown()


Iska 01-10-2009 06:37 1231698

Изумительно! Это будет наилучший вариант.

Увы, я на эту библиотеку как-то практически не обращал внимания и совсем забыл про неё при обсуждении :(.

evg64 01-10-2009 08:33 1231733

Всем спасибо! Вариантов оказывается много! Проблема решена! amel27, вам особенная благодарность! :)

Yashied 01-10-2009 10:11 1231794

Я для этого использую Photoshop.

R.M.L 01-10-2009 17:12 1232070

Right Click Image Converter был бы кстати

evg64 02-10-2009 08:56 1232548

Цитата:

Цитата Yashied
Я для этого использую Photoshop »

Оо! С фотошопом я не знаком, а там можно сразу много файлов так перезаписывать? Не надо, как в пэинте, Открыть файл - сохранить как ? :)

Iska 02-10-2009 09:46 1232571

evg64, надо :). Только делаться сие может:
а) в пакетном режиме работы — макросами (Actions) непосредственно в PhotoShop: наиболее просто и понятно, можно обрабатывать папку целиком, но мало интерактивных возможностей;
б) используя Automation — «ObjCreate("Photoshop.Application")»; описание в формате *.pdf с примерами входит в поставку приложения.

Всё же, на мой взгляд, применение столь «тяжеловесного» приложения как Adobe Photoshop уместно только при нестандартной, сложной, «тяжёлой» или требующей интерактивного вмешательства обработке растровой графики. Иначе сие выглядит пальбой из пушки по воробьям. Ну, и не надо забывать о цене продукта.


Время: 06:08.

Время: 06:08.
© OSzone.net 2001-