Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sumo 11.08.2004 17:04 / 11.08.2004 17:05
Вырезал кусок своего класса:# Класс-обвязка для консольного ImageMagick @CLASS cImageMagick @auto[] ## Статический конструктор $imPath[] $inputImagesDir[] $outputImagesDir[] $convertScript[${imPath}convert] $identifyScript[${imPath}identify] $compositeScript[${imPath}composite] @create[aParams] ## Создает объект ## Путь к скриптам задается от корня сайта ## Путь к картинкам задается от местоположения скриптов или от корня диска ## В качестве параметра передается хэш ## $.imPath - путь к скриптам ImageMagick ## $.inputDir, $.outputDir - пути к картинкам. Если не задан outputDir, то считаем, что пишем в inputDir $imPath[$aParams.imPath] $inputImagesDir[$aParams.inputDir] ^if(def $aParams.outputDir){ $outputImagesDir[$aParams.outputDir] }{ $outputImagesDir[$aParams.inputDir] } # Названия скриптов ImageMagick $convertScript[${imPath}convert] $identifyScript[${imPath}identify] $compositeScript[${imPath}composite] @getImageInfo[aInputImg][lScript;lRet] # Возвращает хэш с параметрами картинки # $.name $.format $.width $.height $.colors $.depth # $.identify - определен или не определен тип картинки # Рекомендуется использовать для определения возможности # работы с данным типом изображений. ^if(def $aInputImg){ $lScript[^file::exec[$identifyScript;;-format;%f %m %wx%h %k %q %b;${inputImagesDir}^file:basename[$aInputImg]]] ^if($lScript.status > 0){ $result[$.isIdentify(0)] }{ # 1name 2format 3wid 4heig 5colors 6depth 7size $lRet[^lScript.text.match[^(\S+)\s+(\S+)\s+(\d+)x(\d+)\s+(\d+)\s+(\S+)\s+(\S+)]] ^if($lRet){ $result[ $.isIdentify(1) $.name[^file:basename[$lRet.1]] $.format[$lRet.2] $.width($lRet.3) $.height($lRet.4) $.colors[$lRet.5] $.depth[$lRet.6] $.size[$lRet.7] ] }{ $result[$.isIdentify(0)] } } }{ ^throw[im.error;ImageMagick.Identify.Exec;Missing image file name.] } @makePreview[aInputImg;aOptions][lScript;lPrefix;lOutputImg] # Делает превьюшку для картинки # В качестве параметров принимает имя файла и хеш с параметрами # $.width, $.height - размер превьюшки [должен быть определен хотябы один параметр] # $.prefix - префикс для файла с превьюшкой. Если не определен, то используется "pr_" # Возвращает признак удачности выполнения: # ^if(^img.makePreview[test.tif]){сделали}{не сделали} # Всегда ковертирует картинку в RGB и убирает все embedded profiles. Выходной формат - JPEG. ^if(def $aInputImg){ ^if(def $aOptions.width || def $aOptions.height){ ^if(def $aOptions.prefix){$lPrefix[$aOptions.prefix]}{$lPrefix[pr_]} $lOutputImg[${lPrefix}^file:justname[$aInputImg].jpg] $lScript[^file::exec[$convertScript;;${inputImagesDir}^file:basename[$aInputImg];-resize;${aOptions.width}x${aOptions.height};-colorspace;RGB;+profile;"*";${outputImagesDir}$lOutputImg]] ^if($lScript.status > 0){ ^throw[exec.error;ImageMagick.Convert.Exec;$lScript.stderr] } }{ ^throw[im.error;ImageMagick.Convert;Size not define.] } }{ ^throw[im.error;ImageMagick.Convert.Exec;Missing image file name.] }