Ответы пользователя по тегу Обработка изображений
  • Возможен ли PNG в CMYK?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Нет, не возможен. PNG предназначен для изображений в RGB или gray scale, т.е. использующих аддитивную цветовую модель, а также может содержать альфа канал. Это и не удивительно, если вспомнить, что PNG означает Portable Network Graphic, т.е. предназначен для отображения на мониторах. В то время, как CMYK - модель субстрактивная, предназначенная для печати.

    Для CMYK нужно использовать JPEG, TIFF или SVG.

    Сомневаюсь, что такая таблица может иметь смысл. Это все равно, что искать таблицу, из которой можно понять, что корабль предназначен для перемещения по воде, а самолет - по воздуху :)
    Ответ написан
  • В чем лучше иконки рисовать?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Ответ написан
    Комментировать
  • Пытаюсь сделать превью для изображения. Можете помочь?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Левой пяткой через правое ухо, я бы сделал как-то так (для наглядности результат сохраняется в файл):
    $src = './orig.jpg';
    $trg = './thumb.jpg';
    
    cropAndResize2Square($src, 128, $trg);
    
    function cropAndResize2Square($originalPath, $targetSquareSide, $targetPath){
    
    	//get original's dimension
    	list($origW, $origH) = getimagesize($originalPath);
    
    	//create images
    	$srcImg = imagecreatefromjpeg($originalPath);
    	$trgImg = imagecreatetruecolor($targetSquareSide, $targetSquareSide);
    	
    	//calculate source square position and side
    	if($origW >= $origH){
    		$srcSquareSide = $origH;
    		$srcSquareX    = ($origW - $targetSquareSide) / 2;
    		$srcSquareY    = 0;
    	} else {
    		$srcSquareSide = $origW;
    		$srcSquareX    = 0;
    		$srcSquareY    = ($origH - $targetSquareSide) / 2;
    	}
    	
    	imagecopyresampled($trgImg, $srcImg, 
    			0, 0, $srcSquareX, $srcSquareY, 
    			$targetSquareSide, $targetSquareSide, $srcSquareSide, $srcSquareSide);
    
    	//encode and save result (default quality 75%)
    	imagejpeg($trgImg, $targetPath);
    	
    	//clean up
    	imagedestroy($srcImg);
    	imagedestroy($trgImg);
    }

    P.S. Если понадобится фильтр (например, Ланчос), лучше юзать ImageMagic. Хотя, если бешенной собаке семь верст - не крюк, можно написать и ручками. Но на PHP это будет убийственно медленно :)
    Ответ написан
    1 комментарий
  • Как сделать квадратное превью изображения на PHP?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Например, воспользоваться imagecopyresampled().

    Для предварительного определения размеров оригинала (и дальнейшего нахождения максимальной квадратной области) можно воспользоваться getimagesize().

    Всех делов кругом бегом - 10~15 строк кода :)
    Ответ написан
    4 комментария