Новости

PHP. Нова бібліотека для роботи з зображеннями - WiseREPORT

Уявляю нову версію бібліотеки imgresize!

Клас написаний на PHP і є обгорткою для GD. Перед використанням переконайтеся, що ваша інсталяція PHP підтримує GDlib. А та, в свою чергу, необхідні формати зображень. Зазвичай PNG, JPEG (JPG) і GIF.

З часів публікації попередньої статті вже багато води утекло. Бібліотека стала більш «дорослої» і обзавелася новими цікавими функціями. Крім того, було виправлено безліч недоліків і багів. Отже, що ж новенького? Спочатку просто списком, потім зупинюся на кожному пункті докладно:

1. Змінити розмір картинки, щоб не виходила за межі прямокутника.
2. Ватермаркі тепер можна накладати на gif та png
3. Збереження прозорості при роботі з gif і png.
4. З'явився метод склеювання декількох картинок по горизонталі
5. Те ж саме, що і п.4, тільки по вертикалі
6. Виправлено метод sharpen, тепер працює коректно

Ну і старі методи, які залишилися:
1. Змінити розмір по вертикалі зі збереженням пропорцій
2. Теж саме по горизонталі
3. Автоматичний розворот фотографії за даними з exif

Пункт 1. Змінюємо розмір картинок, щоб ті не виходили за рамки уявного прямокутника. Припустимо у нас на сторінці є місце під аватар. Нехай 100x150px. Ми завантажуємо вихідну картинку в бібліотеку і виконуємо метод resampleToRectangle (100, 150). Скрипт знаходить у картинки найбільшу сторону, припустимо це виявилася ширина. Потім, уже всередині, застосовується метод resampleToWidth (100). Таким чином зберігаючи пропорції, ми змінюємо розмір методом екстраполяції (зі згладжуванням) і можемо сміливо зберігати отриманий результат в файл. Тепер наш аватар не вийде за рамки відведеної під нього розміру на сторінці.

Пункт 2. Раніше при накладенні ватермарков на зображення типу PNG з'являлися дуже неприємні артефакти. Прозора ватермарка накладалася з фоном і закривала геть частина зображення. Саме про цю проблему можна почитати тут . Тепер же немає обмежень по типу файлів. Єдине, що бібліотека не вміє, так це накладати ватермаркі і зберігати прозорість вихідної картинки. Прозорість пропадає, на жаль. А на щастя то, що така потреба вкрай рідкісна. Зазвичай ватермаркі на напівпрозорі зображення ніхто не клеїть.

Пункт 3. Тепер при роботі з прозорими PNG і GIF зберігається їх прозорість. В інтернеті багато хто скаржиться на появу чорного фону, замість прозорого. Цю проблему з успіхом вдалося вирішити в поточній версії бібліотеки.

Пункт 4 і 5. Іноді потрібно взяти кілька зображень і склеїти їх в одне. Або по горизонталі, або по вертикалі. Ніяких проблем! Використовуйте методи joinHorizontal () і joinVertical ().

Пункт 6. У нових версіях GD через плутанину з типами даних, на старій версії стали з'являтися прикрі спотворення. Тепер проблема повністю усунено.

Зацікавилися? Чудово! Тоді пропоную перейти від слів до справи і розглянути кілька прикладів використання. В кінці статті ви знайдете архів, спеціально підготовлений для того, щоб ви без зусиль могли випробувати ваші можливості, не докладаючи практично ніяких зусиль. Крім самої бібліотеки і прикладів використання, ви знайдете кілька картинок. Просто розпакуйте і вперед! =)

Підключаємо бібліотеку:

require_once 'lib / imgresize.php';

Змінюємо розмір картинки по висоті зі збереженням пропорцій. Застосовуємо метод екстраполяції. Висока якість, але потрібно більше ресурсів.

$ Img = new imgresize (); $ Img-> load ( 'images / 2.jpg'); // Метод поверне true або false $ img-> resampleToHeight (200); // Розмір в пікселях $ img-> sharpen (); // прибираючи мило від ресайз. Не обов'язково. $ Img-> save ( 'images / result.jpg');

jpg');

Теж саме, тільки без екстраполяції. Працює дуже швидко, але з'являються неприємні кубики (пісок) по контурах об'єктів. Підійде для первинної обробки зображення, або для обробки не дуже важливого матеріалу.

$ Img = new imgresize (); $ Img-> load ( 'images / 3.jpg'); // Метод поверне true або false $ img-> resizeToHeight (200); // Розмір в пікселях // $ img-> sharpen (); // Тут не потрібен. Картинка отже занадто різка $ img-> save ( 'images / result.jpg');
Передбачено точно такий же набір для зменшення картинки по ширині resizeToWidth (), resampleToWidth (). Прикладів наводити не буду, все те ж саме.

Зменшуємо зображення, щоб воно не виходило за рамки уявного прямокутника. Дуже зручний метод, крім нього по суті рідко коли щось потрібно. Зменшення йде тільки методом екстраполяції (resample).

$ Img = new imgresize (); $ Img-> load ( 'images / 1.jpg'); //ширина висота. Можна вказати третім параметром true, тоді картинка буде ЗБІЛЬШЕНО // до наведених розмірів, якщо исходник виявиться менше. За замовчуванням false, тобто // зображення залишиться таким же як було. $ Img-> resampleToRectangle (200, 200); $ Img-> sharpen (); $ Img-> save ( 'images / result.jpg');

Тепер давайте накладемо на зображення водяний знак (або ватермарк). В папці images лежить вже підготовлений PNG файл і прозорим фоном. Перед цим можна зменшити зображення до необхідного розміру. Але не після, інакше ватермарк зникне. Є можливість накласти знак на исходник. Тоді наступні перетворення відбуватимуться вже разом, як з єдиної картинкою. Просто передайте ture другим параметром методу watermark. (Не рекомендується).

$ Img = new imgresize (); $ Img-> load ( 'images / 2.jpg'); // $ img-> resampleToRectangle (600, 500); //Якщо потрібно. Або будь-який інший метод. $ Img-> watermark ( 'images / water.png'); // або ватермарку на исходник. //$img->watermark('images/water.png ', true); $ Img-> save ( 'images / result.png', IMAGETYPE_PNG); // Давайте збережемо в формат PNG.

png', IMAGETYPE_PNG);  // Давайте збережемо в формат PNG

З'єднаємо дві картинки по горизонталі. Черговість буде залежати від того в якому порядку завантажуються вихідні.

$ Img [0] = new imgresize (); $ Img [1] = new imgresize (); $ Img [0] -> load ( 'images / 2.jpg'); $ Img [1] -> load ( 'images / 3.jpg'); $ Result = new imgresize (); $ Result-> joinHorizontal ($ img); // Тут вказали тип і якість. За замовчуванням 95. Чим вище, тим краще. // Тільки для типу JPEG. $ Result-> save ( 'images / result.jpg', IMAGETYPE_JPEG, 10);

Теж саме, але по вертикалі. З'єднаємо три картинки, зробимо ресайз і склеим з ватермарочкой.

$ Img [0] = new imgresize (); $ Img [1] = new imgresize (); $ Img [2] = new imgresize (); $ Img [0] -> load ( 'images / 2.jpg'); $ Img [1] -> load ( 'images / 3.jpg'); $ Img [2] -> load ( 'images / 1.jpg'); // Можна і ось так, взявши будь-який екземпляр, але краще окремим об'єктом, // як у прикладі вище $ img [0] -> joinVertical ($ img); $ Img [0] -> resampleToRectangle (1280, 1024); $ Img [0] -> watermark ( 'images / water.png'); $ Img [0] -> save ( 'images / result.jpg');

jpg');

Ватермарка у нас PNG і прозора. Давайте її зменшимо, щоб переконатися в збереженні прозорості, замість появи чорного фону.

$ Img-> load ( 'images / water.png'); $ Img-> resampleToWidth (200); $ Img-> save ( 'images / result.png', IMAGETYPE_PNG);

root4root aka admin

Отже, що ж новенького?
Зацікавилися?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: