Grafika-это библиотека обработки изображений PHP, основанная на Imagick и GD. Его можно использовать для изменения размера изображения, обрезки, сравнения, добавления водяных знаков и так далее. Существуют также хеширование восприятия, расширенная фильтрация изображений, рисование кривой Бесселя и другие функции, которые можно охарактеризовать как очень мощные.
Поскольку функций слишком много, он разделен на несколько статей для написания.
“1. Базовая обработка изображений” 2. Модуль обработки специальных эффектов изображений 3. Обработка Атрибутов изображения 4. Графический рисунок
Преимущество:
- Миниатюры получаются очень быстрыми и очень качественными.
- Поддержка интеллектуального пошива
- Хорошая поддержка GIF-изображений
- Пять шаблонов миниатюр
- Функция Контрастности Изображения
- Расширенная Функция Фильтрации Изображений
- Смешивание Изображений
- API, поддерживаемые другими библиотеками обработки изображений, в основном поддерживаются
устанавливать
скачать
1. Прямая загрузка:
Официальный сайт Графики, адрес на Github
2、 композитор
:
composer require kosinix/grafika:dev-master --prefer-dist
Экологические потребности
- PHP.3, конечно, php 7 официально рекомендуется
- Библиотека GD 2.0
Imagick
Лучший (не требуется).3.0,ImageMagick
.5.3
развертывать
Скачал Графика
Основная структура каталога выглядит следующим образом:
Однако композитор
Скачайте еще немного, вам просто нужно использовать kosinix/графика
Только то, что есть в каталоге.
Мы графика
Создаем каталог index.php
Все последующие операции находятся здесь.
графика
Она предоставляет нам очень полезную. autoloader.php
Находиться src
В каталоге.
останься index.php
Представь это. Чтобы проиллюстрировать это, необходимо привести следующие примеры autoloader.php
Файл, мы опускаем по умолчанию Следующее может быть разработано непосредственно.
require_once 'src/autoloader.php';
Создание Редакторов
1、Создать индикатор
графика
С помощью статического метода создать редактор
Чтобы создать редактор
. Он содержит все методы обработки изображений.
Поскольку графика
Основана на Imagick
и GD
Библиотеке, поэтому используйте CreateEditor
Метод автоматически выберет необходимую библиотеку обработки изображений в соответствии с текущей ситуацией. (Рекомендуется)
use Grafika\Grafika; // Import package $editor = Grafika::createEditor(); // Create the best available editor
2,Редактор изображений
Конечно, вы также можете использовать его напрямую. Imagick
Библиотека классов.
use Grafika\Imagick\Editor; // Import package $editor = new Editor(); // Imagick editor
Примечание.В некоторых ситуациях эта библиотека может не поддерживаться, для ее проверки необходимо использовать следующую инструкцию. (Однако вам лучше использовать метод 1 напрямую, таких вещей не существует.)
use Grafika\Imagick\Editor; // Import package $editor = new Editor(); // Imagick editor if( $editor->isAvailable() ) { // Safety check // Your code here }
3,Редактор GD
Вы также можете использовать его напрямую. GD
Библиотеки, есть некоторые ситуации, которые могут не поддерживаться, не забудьте проверить
use Grafika\Gd\Editor; // Import package $editor = new Editor(); // Gd editor if( $editor->isAvailable() ) { // Safety check // Your code here }
Создание изображений
Создание изображений
1. Откройте изображение напрямую
Установить редактор
+ открыть
Метод
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor->open( $image, 'path/to/image.jpg');
2. Статическое Открытие Изображений
Используйте Прямое открытие для создания изображений
use Grafika\Grafika; $image = Grafika::createImage('path/to/image.jpg'); // Here, $editor = Grafika:: createEditor () is omitted.
3. Создайте пустой холст
Создайте новый холст в виде нового изображения
use Grafika\Grafika; $image = Grafika::createBlankImage(100,100);
4. Скопируйте один из существующих изображений
Скопируйте изображение для обработки изображений
$copy = clone $image;
Таким образом, вы должны убедиться, что у вас есть фотография раньше.
После этих методов операция во многом повторяется. Мы выбираем только первый распространенный метод в качестве наглядного примера.
Миниатюры изображений
Давайте сначала подготовим оригинальную картинку.
Далее давайте предположим, что миниатюра, которую мы хотим создать, имеет длину 200 пикселей и ширину 200 пикселей.
1,Размер По Размеру
Равный тип масштабирования. Затем убедитесь, что более длинная сторона изображения не превышает 200 пикселей, что соответствует масштабу. Нет заполнения фона после масштабирования 。
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor - > open ($image1,'yanying. jpg'); // open yanying. JPG and store it in $image1 $editor->resizeFit($image1 , 200 , 200); $editor->save($image1 , 'yanying1.jpg'); $editor - > open ($image2,'yanying-h.jpg'); //open yanying.jpg and store it in $image2 $editor->resizeFit($image2 , 200 , 200); $editor->save($image2 , 'yanying2.jpg');
Конечно, не забудьте первую строчку. требуется
2,Точный Размер
Тип масштабирования фиксированного размера. То есть, независимо от соотношения сторон изображения, оно будет уменьшено до 200 пикселей, что может привести к деформации изображения.
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor - > open ($image1,'yanying. jpg'); // open yanying. JPG and store it in $image1 $editor->resizeExact($image1 , 200 , 200); $editor->save($image1 , 'yanying1.jpg'); $editor - > open ($image2,'yanying-h.jpg'); //open yanying.jpg and store it in $image2 $editor->resizeExact($image2 , 200 , 200); $editor->save($image2 , 'yanying2.jpg');
3,Изменение размера Заливки
Разрежьте посередине. Он состоит в том, чтобы увеличить более короткие до 200 пикселей, а затем вырезать длинные, размером более 200 пикселей, посередине, чтобы изображение не деформировалось.
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor - > open ($image1,'yanying. jpg'); // open yanying. JPG and store it in $image1 $editor->resizeFill($image1 , 200,200); $editor->save($image1 , 'yanying1.jpg'); $editor - > open ($image2,'yanying-h.jpg'); //open yanying.jpg and store it in $image2 $editor->resizeFill($image2 , 200,200); $editor->save($image2 , 'yanying2.jpg');
4,Измените Точную Ширину
Масштабирование равной ширины. Аналогично первой функции, она в конечном итоге имеет ширину 200 пикселей и масштабируется с одинаковым соотношением независимо от высоты.
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor - > open ($image1,'yanying. jpg'); // open yanying. JPG and store it in $image1 $editor->resizeExactWidth($image1 , 200); $editor->save($image1 , 'yanying1.jpg'); $editor - > open ($image2,'yanying-h.jpg'); //open yanying.jpg and store it in $image2 $editor->resizeExactWidth($image2 , 200); $editor->save($image2 , 'yanying2.jpg');
5,Измените Размер Точной Высоты
Увеличение с постоянной высотой. Конечная высота составляет 200 пикселей, равная масштабу, независимо от ширины изображения.
Функция Контрастности Изображения
1. Сравнение сходства изображений
Сначала мы готовим базовую картинку для сравнения с другими картинками. (возможно, были обработаны изображения страниц по умолчанию, и прямое использование изображений в этой статье может привести к противоречивым результатам)
1. Впервые для сравнения мы использовали изображение в оттенках серого.
use Grafika\Grafika; $editor = Grafika::createEditor(); $result = $editor->compare('yanying.jpg' , 'yanying_grey.jpg'); var_dump($result); // int 2
Поясните: Метод контраста изображения Графика сравнение
Возвращает число, в котором чем ближе число к 0, тем более похожая картинка. Если число находится в диапазоне 0-10, изображения могут быть похожими. Но если число больше 10, то оно может быть совершенно другим.
Вернитесь к 2 здесь, чтобы показать, что сходство все еще очень велико.
2. Давайте используем для тестирования картинку меньшего размера и запомним, что все это сравнивается с первой основной картинкой.
use Grafika\Grafika; $editor = Grafika::createEditor(); $result = $editor->compare('yanying.jpg' , 'yanying-smaller.jpg'); var_dump($result); // int 0
Здесь результат возвращает 0, и сходство очень велико.
3. Давайте проверим с помощью обрезанного локального изображения.
use Grafika\Grafika; $editor = Grafika::createEditor(); $result = $editor->compare('yanying.jpg' , 'yanying-half.jpg'); var_dump($result); // int 20
Результаты превысили 10, и сходство было не очень высоким.
4. Давайте проверим это на совершенно другой картинке.
use Grafika\Grafika; $editor = Grafika::createEditor(); $result = $editor->compare('yanying.jpg' , 'yanying-h.jpg'); var_dump($result); // int 39
В результате 39 становится все больше и больше, все менее и менее похожим.
2. Сравните фотографии, чтобы убедиться, что они одинаковые
Grafika предоставляет методы равные
Для проверки идентичности двух изображений. Проверка здесь заключается в определении пикселя за пикселем, поэтому время может быть больше.
Конечно, grafika также предварительно проверяет и возвращает напрямую, если два изображения имеют разные размеры false
. Попиксельная проверка выполняется только в том случае, если все остальные совпадают.
Давайте сравним миниатюру, созданную ранее, потому что размер не тот же, поэтому сразу вернемся назад. ложь
use Grafika\Grafika; $editor = Grafika::createEditor(); $result = $editor->equal('yanying.jpg' , 'yanying-smaller.jpg'); var_dump($result); // boolean false
Интеллектуальный пошив одежды
Интеллектуальная обрезка является важной частью автоматического распознавания изображений, которая, как правило, сохраняет ключевую часть.
Но grafika также обеспечивает адаптацию положения под контролем человека, давайте начнем с этого.
Пошив базовой позиции
Базовая позиция пошива одежды состоит из девяти позиций
- вверху слева
- верхний центр
- вверху справа
- слева по центру
- центр
- в центре справа
- внизу слева
- нижний центр
- внизу справа
Давайте поговорим об этом здесь. Здесь мы используем изображения 900 * 600 и делим их на девять частей.
use Grafika\Grafika; $editor = Grafika::createEditor(); $src = 'yanying.jpg'; $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'top-left' ); $editor->save( $image, 'result1.jpg' ); $editor->free( $image ); $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'top-center' ); $editor->save( $image, 'result2.jpg' ); $editor->free( $image ); $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'top-right' ); $editor->save( $image, 'result3.jpg' ); $editor->free( $image ); $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'center-left' ); $editor->save( $image, 'result4.jpg' ); $editor->free( $image ); $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'center' ); $editor->save( $image, 'result5.jpg' ); $editor->free( $image ); $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'center-right' ); $editor->save( $image, 'result6.jpg' ); $editor->free( $image ); $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'bottom-left' ); $editor->save( $image, 'result7.jpg' ); $editor->free( $image ); $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'bottom-center' ); $editor->save( $image, 'result8.jpg' ); $editor->free( $image ); $editor->open( $image, $src ); $editor->crop( $image, 300, 200, 'bottom-right' ); $editor->save( $image, 'result9.jpg' ); $editor->free( $image );
Посмотрите на результаты.
Интеллектуальный пошив одежды
Исходный график
Мы используем интеллектуальную обрезку для обрезки изображений до 200*200 пикселей
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor->open( $image, 'yanying-smaller.jpg' ); $editor->crop( $image, 200, 200, 'smart' ); $editor->save( $image, 'yanying-smart.jpg' );
Открытия все еще могут выделить ключевые моменты
Миниатюры GIF
Сжатие GIF без потери анимации
Grafika может сжимать GIF-изображения напрямую, не теряя анимации.
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor->open( $image, 'sample.gif' ); $editor->resizeFit( $image, 250, 128 ); $editor->save( $image, 'output.gif' );
Мы сжали исходное изображение до половины исходного и обнаружили, что анимация не была потеряна.
Удалить эффекты анимации GIF
Конечно, при необходимости мы также можем напрямую удалить эффекты GIF-анимации.
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor->open( $image, 'sample.gif' ); $editor->flatten( $image ); $editor->save( $image, 'output-no-animation.gif' );
Складывается картина
Для объединения изображений требуются две картинки, одна из которых служит основной картинкой. Вторая глава подготовки рисунка помещена на основной картинке.
Давайте начнем с кода.
use Grafika\Grafika; $editor = Grafika::createEditor(); $editor->open($image1 , 'yanying-h.jpg'); $editor->open($image2 , 'yanying-smaller.jpg'); $editor->blend ( $image1, $image2 , 'normal', 0.9, 'center'); $editor->save($image1,'333/yanying-blend.jpg');
Объяснять
Сначала откройте две картинки, где $image1
На основе картинки, то есть поместите ее ниже. Основное внимание уделяется смешиванию
Этого метода.
среди
- Первый параметр-это базовая картинка.
- Второй параметр-это изображение, размещенное над базовым изображением.
обычный, многократный, наложение или экран.
Тип здесь означает шаблон наложения изображений. Вот несколько примеров, чтобы показать разницу между каждым из них. - Третий параметр-прозрачность, о которой легко думать, не говоря слишком много.
- Четвертое-местоположение, с 10 вариантами выбора. Первые девять-это определяемые пользователем места посещения, а последнее – интеллектуальное посещение, о котором судит графика.
верхний левый, верхний центр, верхний правый, центральный левый, центральный, центральный правый, нижний левый, нижний центр, нижний правый и умный
- Пятый параметр является необязательным параметром, указывающим расстояние между рисунком 2 и левой частью рисунка 1.
- Шестой параметр также является необязательным параметром, указывающим расстояние между рисунком 2 и верхней частью рисунка 1.
Давайте попробуем применить это в нескольких ситуациях.
1,нормальный
Информация о местоположении: центр, прозрачность равна 0,9, что соответствует коду, приведенному выше.
2,умножьте
Информация о местоположении: вверху слева, прочее без изменений
3,наложение
Информация о местоположении: внизу справа, другое без изменений
4,экран
Информация о местоположении: Последний параметр местоположения не указан, что является значением по умолчанию. вверху слева
Поворот изображения
Поворот изображения относительно прост, просто укажите параметр угла поворота, если вы хотите заполнить фон цветом, затем укажите параметр цвета. (По умолчанию цвет фона не является черным)
Код выглядит следующим образом
use Grafika\Grafika; use Grafika\Color; $editor = Grafika::createEditor(); $editor->open($image , 'yanying-smaller.jpg'); $editor->rotate($image ,'45',new Color('#ff0000')); $editor->save($image,'333/yanying-rotate.jpg');
Для последнего параметра цвета фона также требуется цветной объект
Написание картинок
Существует множество параметров для написания текста на картинке, но если он используется нормально, необходимо заполнить только первые два. Последние параметры являются необязательными.
Давайте рассмотрим параметры один за другим.
изображение
Картинки, необходимые для написания текстатекст
Слова, которые нужно написатьразмер
Размер шрифта, по умолчанию12 пикселей
x
(Выбрано) Крайнее левое расстояние текста от Крайнего левого расстояния изображения по умолчанию0
y
(необязательно) Расстояние от базовой линии текста до верхней части изображения по умолчанию равно12 пикселей
, то есть высоте текста. (Базовая линия находится в нижней части текста.)цвет
(необязательно) цвет шрифта,Цвет
Объекты, требуетсяновый цвет
Один раз, по умолчанию черный.font
(Selected) Full path of делают, default,Не делают
.угол
(необязательное заполнение) угол поворота текста, диапазон значений0-359
По умолчанию0
То есть никакой ротации.
Давайте попробуем найти текст наугад.
use Grafika\Grafika; use Grafika\Color; $editor = Grafika::createEditor(); $editor->open($image , 'yanying-smaller.jpg'); $editor->text($image ,'yanying',30,200,100,new Color("#000000"),'',45); $editor->save($image,'333/yanying-text.jpg');
Посмотрите на эффект. Здесь, если текст китайский, вам нужно найти шрифт, поддерживающий китайский. Шрифт по умолчанию не поддерживает китайский, поэтому вы пишете по-китайски, то есть небольшими полями.
Янь Ин, инженер по исследованиям и разработкам PHP
Ночь 2016-11-07
Блог: Главная страница неисправности сегмента
Порекомендуйте разработчикам Навигацию по веб – сайту, разработанную нашей командой: Навигация с помощью пера-Сделайте наиболее лаконичную навигацию по веб-сайту с вашим сердцем
Вы можете настроить Классификацию веб-сайтов можно настроить Классификацию можно пометить цветами Пользовательский скин Пользовательский поиск Сортировка перетаскиванием веб-сайтов Пользовательский подключаемый модуль