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