КОнтакты, предложения, отзывы

.rar или .zip
Вложение
Онлайн-чат
На этом сайте, вы найдёте полезную информацию, практические советы в области веб-программирования, веб-дизайна и веб-разработок в целом. Мы с удовольствием поделимся с вами реальными примерами и решениями задач, связанных с jQuery , JavaScript , PHP и MySQL , версткой сайтов , поможем разобраться новичкам с современными технологиями, такими как Ajax , HTML5 , CSS3 и многими другими.

Начинаем знакомство с ImageMagick


Итак, лайбрари исключтительно ООПэшная. Чтоб начать веселье, нужно создать обьект класса Imagick:
$canvas=new Imagick(); // создаст новый обьект и далее
$canvas->newImage(400, 300, new ImagickPixel('green'), 'png'); // новое изо 
$im=new Imagick('girl.png'); // откроет существующее
$im=new Imagick('http://web4myself.ru/img/girls/photoshop.png'); // по УРЛу
$imarray = new Imagick (glob('*.jpg')); // открываем массированно 
Библиотеке требуются абсолютные пути к исхoдным и сохраняемым изображениям, не относительно корня сайта, а вида
$path = $_SERVER['DOCUMENT_ROOT'].' /img.png';
$path = __DIR__ . '/img.png';
// или
$path = realpath('img.png');

Тип изображения

echo $im->getImageMimeType(); // Вернёт один из возможных типов
echo $im->getImageFormat(); // Вернёт формат 

/* Установка формата */
$image = new Imagick(); 
$pixel = new ImagickPixel( 'gray' );
$image->newImage(400, 200, $pixel);
$image->setImageFormat('png');

/** {[Или так сразу]} **/
$image = new Imagick();
$pixel = new ImagickPixel( '#34e41b' );
$image->newImage(400, 200, $pixel, 'png');

Размеры изображения

$image = new Imagick("picture.jpg");
$width = $image->getImageWidth(); // узнаем ширину
$height = $image->geiImageHeight(); // и высоту

// то же с помощью getImageGeometry
$geo=$image->getImageGeometry(); 
$sizex=$geo['width']; 
$sizey=$geo['height']; 

/*** изменяем ***/
// второй и четвёртый параметры - фильтр и коэф. размытия(от -1 до 1, float)
$img->resizeImage(1002, 0, imagick::FILTER_SINC, 1); 

// ещё вариант::
$im->thumbnailImage(200, 150); // 
$im->thumbnailImage(200, null); // масштабнёт пропорционально
/* или ширина или высота в зависимости от пропорций: */
$im->thumbnailImage(200, 200, true);

// и ещё, море вариантов::
$img->scaleImage($width, 0);

$im->adaptiveResizeImage(1024,0); // как вариант для веб-изображений 

/** с передачей bestfit-параметра:: **/
$width_src = $img->getImageWidth(); // узнаем ширину
$height_src = $img->getImageHeight(); // и высоту
$width = intval($_POST['width']);
$prop = $height_src/$width_src; // числим пропорции
$img->adaptiveResizeImage($width, $prop*$width, true);

Клонирование

// создаст точную копию обьекта Imagick:
$image = new Imagick(__DIR__ . DIRECTORY_SEPARATOR .'img1/php.png');
$image2=clone ($image);

Резка

/* Удалит выбранную область и вернёт обрезанную картинку */
$image->chopImage(200, // Ширина обрезаемой области
                  200, // высота обрезаемой области
                  0, // координата Х 
                  0); //  координата У

/* Вырежет часть изображения, вернёт тру */
$img->cropImage($width, $height, $x, $y);

/***# Резка по центру c изменениями размера. Круто, оч. рекомендую #***/
// прилагаю документацию::
/*Если эскиз не в соответствии с форматом исходного изображения, это метод использовать.
Эскиз захватить весь образ на более короткого края исходного изображения (то есть, 
вертикальный размер на ландшафтном изображения).
 Тогда эскиз будет уменьшено, чтобы удовлетворить вашу целевую высоту, сохраняя 
пропорции. Дополнительные горизонтальное пространство, что не вписывается в целевой
 $width будет обрезана с равномерно влево и вправо.
В результате, как правило, эскизов хорошее представление исходного изображения.*/
$img->cropThumbnailImage(300, 300);

COMPOSITION

$first = new Imagick($source_image_path); 
$second = new Imagick($watermark_path);
// накладываем изображения
$first->compositeImage($second, Imagick::COMPOSITE_DEFAULT, $x, $y);

Рамка

borderImage делает рамку для изображения, точнее создаёт новую картинку заданного цвета и в её центр помещает исходную.
// окружаем изображение рамкой  5 px
$bordercolor=new ImagickPixel('#ed5412');
$img->borderImage ($bordercolor , 5 , 5 );

Яркость и контраст

brightnessContrastImage - изменяет одновременно яркость и контраст изображения, 3 параметра: яркость (от -100 до 100), контраст (тот же диапазон), канал (Imagick::CHANNEL_DEFAULT по умолчанию).
function brightnessContrastImage($imagePath, $brightness, $contrast, $channel=Imagick::CHANNEL_DEFAULT) {
  $imagick = new \Imagick(realpath($imagePath));
  $imagick->brightnessContrastImage($brightness, $contrast, $channel);
  header("Content-Type: image/jpg");
  echo $imagick->getImageBlob();
}

Шум

// накладывает случайный шум на изображение
$img->addNoiseImage(imagick::NOISE_UNIFORM);

Вывод в браузер или файл

/* Вывод в браузер, передаём хэдер:: */
header("Content-Type: image/jpg");
echo $img->getImageBlob();

/** Запись в файл:: **/
$img->writeImage($filename);

// или 
$im->setImageFormat ("jpeg");
file_put_contents ("test_1.jpg", $im);

// или так 
$im->imageWriteFile (fopen ("test_2.jpg", "wb"));

Очистка ресурса

После завершения всех операций нужно освободить память::
$img->clear();
2015.07.18 121

http://lurkmore.to/
Войдите или Зарегистрируйтесь чтобы оставить комментарий

Комментарии


    Яндекс.Метрика Яндекс.Метрика