parser

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

 

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

Решение для img.p в связке с nConvert

Menandr 05.10.2015 00:31

Решение для img.p в связке с nConvert. Если кто напишет по аналогии для imageMagik, будет совсем круто.

В img.p
######################################################

@canvas[sFileSrc;sFileDest;sCanvasWidth;sCanvasHeight;hParams][tColor;fResult]

$hParams[^self._prepareParams[$hParams]]

^if(def $hParams.sBGColor){

	$tColor[^hParams.sBGColor.split[,;lh]]

	^self._checkColor[canvas;$tColor.0]
	^self._checkColor[canvas;$tColor.1]
	^self._checkColor[canvas;$tColor.2]
}

^if(!def $sCanvasWidth || !def $sCanvasHeight){

	^throw[$sClassName;canvas;Canvas width and height MUST be specified]
}

^hParams.add[

	^self._getFiles[canvas;$sFileSrc;$sFileDest;$hParams.sFormat;$hParams]

	$.iR($tColor.0)
	$.iG($tColor.1)
	$.iB($tColor.2)

	^if(!def $hParams.sPosition){

		$.sPosition[center]
	}

	$.sCanvasWidth[$sCanvasWidth]
	$.sCanvasHeight[$sCanvasHeight]
]

$fResult[^self._createDirAndExec[canvas;$hParams]]

$result($fResult.status)

######################################################
В nconvert.p в @_exec[]
...
	^case[canvas]{^file::exec[$hScript.$sAction;$hOptions;-o;$hParams.sOutput;-canvas;$hParams.sCanvasWidth;$hParams.sCanvasHeight;$hParams.sPosition;-bgcolor;$hParams.iR;$hParams.iG;$hParams.iB;^if($hParams.bRemoveMeta){-rmeta}{-quiet};-out;$hParams.sFormat;-q;$hParams.iQuality;^if($hParams.iColors){-colors}{-quiet};^if($hParams.iColors){$hParams.iColors}{-quiet};$hParams.sInput]}
...
Параметры
^oImg.canvas[$sFileSrc;$sFileDest;$sCanvasWidth;$sCanvasHeight;$hParams]

Здесь
$sCanvasWidth     - ширина области (в px или %)
$sCanvasHeight    - высота области (в px или %)

$hParams          - хэш со следующими полями
	$.sBGColor    - цвет фона (формат "R,G,B")
	$.sPosition	  - позиция исходного изображения
		top-left, left-top           : top-left
		top-center, center-top       : top-center
		top-right, right-top         : top-right
		center-left, left-center     : center-left
		center                       : center (по умолчанию)
		center-right, right-center   : center-right
		bottom-left, left-bottom     : bottom-left
		bottom-center, center-bottom : bottom-center
		bottom-right, right-bottom   : bottom-right
	$.sFormat     - выходной формат
	$.bRemoveMeta - флаг удаления метаданных
	$.iQuality    - качество для jpg и png
	$.iColors     - кол-во цветов (256, 216, 128, 64, 32, 16 или 8)
Может быть, кому-нибудь пригодится.