parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

nconvert != convert

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 код может и не оптимальный, но вот пока руки не доберутся его довести до ума.