#php #vips
#php #vip-персоны
Вопрос:
Я пытаюсь написать PHP-функцию для наложения текста на изображение, используя библиотеку php-vips. Просматривая документацию, я не могу найти функцию, которая выводит текст в документации libvips здесь, а документация php-vips здесь не содержит тонны деталей и, похоже, просто направляет вас на использование документации libvips. Я нашел фрагмент в одном из выпусков php-vips (this), но в нем используется текстовая функция, которой нет в текущей библиотеке php-vips. Кто-нибудь знает, возможно ли нарисовать текст на изображении с помощью php-vips, и если да, то как это делается? Для справки мой вариант использования — нарисовать временную метку для фотографии поверх фотографии при загрузке в формате PDF.
Комментарии:
1. В текущих php-vips, безусловно, есть
text
метод. Попробуйте индекс в документах libvips, или здесь есть удобный список функций vips: libvips.github.io/libvips/API/current/func-list.html — просто найдите «текст».
Ответ №1:
Я сделал для вас демонстрационную программу:
#!/usr/bin/php
<?php
require __DIR__ . '/vendor/autoload.php';
use JcupittVips;
$image = VipsImage::newFromFile($argv[1], ['access' => 'sequential']);
// this renders the text to a one-band image ... set width to the pixels across
// of the area we want to render to to have it break lines for you
$text = VipsImage::text('Hello world!', [
'font' => 'sans 120',
'width' => $image->width - 100
]);
// make a constant image the size of $text, but with every pixel red ... tag it
// as srgb
$red = $text->newFromImage([255, 0, 0])->copy(['interpretation' => 'srgb']);
// use the text mask as the alpha for the constant red image
$overlay = $red->bandjoin($text);
// composite the text on the image
$out = $image->composite($overlay, "over", ['x' => 100, 'y' => 100]);
$out->writeToFile($argv[2]);
Я могу запустить его следующим образом:
$ ./render_text.php ~/pics/tiny_marble.jpg x.jpg
Чтобы сделать:
Документы по текстовому методу находятся здесь:
https://libvips.github.io/php-vips/docs/classes/Jcupitt.Vips .ImageAutodoc.html#method_text
К сожалению, разметка phpdoc не позволяет нам создавать документы для опций. Вам нужно обратиться к полным документам libvips здесь:
https://libvips.github.io/libvips/API/current/libvips-create.html#vips-text
Комментарии:
1. В текстовой документации отмечается, что есть параметр options, есть ли какая-либо ссылка на то, что это за параметры?
2.Да, это параметры, перечисленные для
vips_text()
:libvips.github.io/libvips/API/current /…font
,align
dpi
и т.д. Вы также можете получить сводку в командной строке, попробуйте ввести «текст для VIP-персон».