| Новости | 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.]
}