| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
max_rip 13.04.2012 20:38 / 13.04.2012 20:42
У меня более сложный вариант уменьшения фото@upploadFile[data;notWatermark]
$name[${img_url}${data.galleryId}/^file:justname[$data.fileName.name].jpg]
$prew[${img_url}${data.galleryId}/prew_^file:justname[$data.fileName.name].jpg]
^if(-f $name){
^self.addError[такой файл уже существует]
$result(-1)
}{
^data.fileName.save[binary;${name}-tmp]
$oImg[^NConvert::create[
# Путь, где лежит nconvert
$.sScriptPath[/cgi-bin/bin]
# Имя самого файла nconvert
$.sScriptName[nconvert]
$.iColors[256]
$.iQuality[80]
$.bKeepRatio[1]
$.bRemoveMeta[1]
]]
^oImg.resize[${name}-tmp;${name}-res;;$bH;[$.sFormat[jpg]]]
$imgInfo[^oImg.info[${name}-res]]
^if(def $notWatermark){
^file:move[${name}-res;${name}]
}{
^oImg.watermark[${name}-res;${name};/images/watermark.png;[$.sFormat[jpg]$.sPosition[center]]]
}
^file:delete[${name}-tmp]
$rationImg($imgInfo.iWidth/$imgInfo.iHeight)
^if($sW/$sH > $rationImg){
$newH(^math:round($sW/$rationImg))
$newW($sW)
}{
$newW(^math:round($sH*$rationImg))
$newH($sH)
}
$x(^math:round(($newW/2)-($sW/2)))
$y(^math:round(($newH/2)-($sH/2)))
^oImg.resize[${name}-res;${name}-tmp;$newW;$newH;[$.sFormat[jpg]]]
^oImg.crop[${name}-tmp;${prew};$x;$y;$sW;$sH;[$.sFormat[jpg]]]
^file:delete[${name}-tmp]
^file:delete[${name}-res]
^if(^insertSQL[$data]<0){
^file:delete[${name}]
^file:delete[${prew}]
$result[-1]
}{
$result[0]
}
}
#end @upploadFileИ при инициализации класса $sW(^if(def $params.sW){$params.sW}{630}) ^rem{размер превьюшки}
$sH(^if(def $params.sH){$params.sH}{320}) ^rem{размер превьюшки}
$bH(^if(def $params.bH){$params.bH}{700}) ^rem{размер фотки}
$bW(^if(def $params.bH){$params.bW}{}) ^rem{размер фотки}PS код может и не оптимальный, но вот пока руки не доберутся его довести до ума.