| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Никита 14.10.2016 16:29
Добрый день. Делаю preview картинок с помощью ImageMagick. В библиотеке (http://www.parser.ru/lib/img/) есть пример ImageResize, упрощающий изменение размеров изображений. На форуме Миша его кидал.#==Попробуем создать превью
# $srcOriginal[/content/pic/image.jpg]
# $srcFinish[/preview/logopost/pic/image.jpg]
# $width(345)
# $height(130)
^resize[$srcOriginal;$srcFinish;$width;$height;$.type[smart]]
# Метод ресайза превью с учетом пропорциональности
@resize[sFileSrc;sFileDest;sWidth;sHeight;hParams]
$fMeasure[^image::measure[$sFileSrc]]
$hDestSize[
$.iWidth(^sWidth.int(0))
$.iHeight(^sHeight.int(0))
]
$hParams[^hash::create[$hParams]]
^switch[$hParams.type]{
^case[as-is]{
$bKeepRatio(false)
$w[$hDestSize.iWidth]
$h[$hDestSize.iHeight]
}
^case[smart]{
# Что то ну так в этой ветке
$bKeepRatio(false)
^if($fMeasure.width>$fMeasure.height){
$iSourceBig($fMeasure.width)
$iSourceSmall($fMeasure.height)
$hTargetSize[
$.iWidth($hDestSize.iWidth)
$.iHeight($hDestSize.iHeight)
]
}{
$iSourceBig($fMeasure.height)
$iSourceSmall($fMeasure.width)
$hTargetSize[
$.iWidth($hDestSize.iHeight)
$.iHeight($hDestSize.iWidth)
]
}
^if($hDestSize.iWidth>$hDestSize.iHeight){
$iTargetBig($hDestSize.iWidth)
$iTargetSmall($hDestSize.iHeight)
}{
$iTargetBig($hDestSize.iHeight)
$iTargetSmall($hDestSize.iWidth)
}
$hRatio[
$.dBig($iSourceBig/$iTargetBig)
$.dSmall($iSourceSmall/$iTargetSmall)
]
^if($hRatio.dBig > $hRatio.dSmall){
$w[^math:floor($fMeasure.width/$hRatio.dSmall+0.5)]
$h[^math:floor($fMeasure.height/$hRatio.dSmall+0.5)]
}{
$w[^math:floor($fMeasure.width/$hRatio.dBig+0.5)]
$h[^math:floor($fMeasure.height/$hRatio.dBig+0.5)]
}
$iX(0)
$iY(0)
^if($w > $hTargetSize.iWidth){
$iX(($w-$hTargetSize.iWidth)/2)
}
^if($h > $hTargetSize.iHeight){
$iY(($h-$hTargetSize.iHeight)/2)
}
}
^case[DEFAULT;ratio]{
$bKeepRatio(true)
$w[$hDestSize.iWidth]
$h[$hDestSize.iHeight]
}
}
^try{
^if(^imMag.resize[$sFileSrc;$sFileDest;$w;$h;^hash::create[$hParams] $.sResizeType[decr] $.bKeepRatio($bKeepRatio)]){
^throw[$sClassName;resize;Resizing the image is failed.]
}
^if(($iX || $iY) && ^imMag.crop[$sFileDest;;$iX;$iY;$hTargetSize.iWidth;$hTargetSize.iHeight;$hParams]){
^throw[$sClassName;resize;Cropping the image is failed.]
}
}{
# bad
}
$response:body[^file::load[binary;$srcFinish]]