Наложение текста с помощью php-vips

Я пытаюсь написать функцию PHP для наложения текста на изображение с помощью библиотеки php-vips. Просматривая документацию, я не могу найти функцию, которая рисует текст в документации libvips здесь и документацию по php-vips здесь не предоставляет массу деталей и, кажется, просто указывает вам использовать документацию libvips. Я нашел фрагмент в одном из выпусков php-vips (это), но он использует текстовую функцию, которой нет в текущей библиотеке php-vips. Кто-нибудь знает, можно ли рисовать текст на изображении с помощью php-vips, и если да, то как это делается? Для справки, мой вариант использования - нарисовать временную метку для фотографии поверх фотографии при загрузке в формате PDF.


person avorum    schedule 14.03.2019    source источник
comment
В текущих php-vips определенно есть метод text. Попробуйте индекс в документации libvips, или здесь есть удобный список функций vips: libvips.github.io/libvips/API/current/func-list.html — просто найдите текст.   -  person jcupitt    schedule 14.03.2019


Ответы (1)


Я сделал вам демонстрационную программу:

#!/usr/bin/php 
<?php
require __DIR__ . '/vendor/autoload.php';
use Jcupitt\Vips;

$image = Vips\Image::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 = Vips\Image::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

person jcupitt    schedule 14.03.2019
comment
В текстовой документации отмечается, что есть параметр параметров, есть ли ссылка на эти параметры? - person avorum; 18.03.2019
comment
Да, это параметры, перечисленные для vips_text(): libvips. github.io/libvips/API/current/ font, align, dpi и т. д. Вы также можете получить сводку в командной строке, попробуйте ввести текст vips. - person jcupitt; 18.03.2019