Я хочу добавить текст в jpg, создавая новое изображение.
На сервере уже будет image_1.jpg, и я хочу взять предоставленную пользователем копию и поместить ее поверх image_1.jpg, создавая новое изображение, которое объединяет копию и исходное изображение в новый растрированный jpg
Я знаю, что вы можете использовать GD Libraries
в php
для растеризации копии, но можете ли вы ее сложить? Мой сайт написан на PHP, но я открыт для использования сторонних плагинов.
ОТВЕТ: (СТАРЫЙ ПОЧТА), но мне нужно http://blog.rafaeldohms.com.br/2008/02/12/adding-text-to-images-in-real-time-with-php/
Используя GD и Freetype2, если оба установлены, вы можете добавить текст в JPEG, выполнив следующие шаги.
создать ресурс изображения из файла с помощью imagecreatefromjpeg()
добавьте текст к этому изображению с помощью библиотеки Freetype2 с помощью функции imagefttext()
(обратите внимание, что вы можете также использовать функцию imagettftext()
если у вас установлен Freetype, а не Freetype2).
сохранить измененное изображение с помощью imagejpeg()
Пример:
[Я буквально просто набрал это в браузере, никогда не запускал его, поэтому, если он нуждается в поправке, извини.]
/** * Annotate an image with text using the GD2 and Freetype2 libraries * * @author Orbling@StackOverflow * * @param string $sourceFileName Source image path * @param string $destinationFileName Destination image path * @param string $text Text to use for annotation * @param string $font Font definition file path * @param float $fontSize Point size of text * @param array $fontColour Font colour definition, expects array('r' => #, 'g' => #, 'b' => #), defaults to black * @param int $x x-coordinate of text annotation * @param int $y y-coordinate of text annotation * @param float $rotation Angle of rotation for text annotation, in degrees, anticlockwise from left-to-right * @param int $outputQuality JPEG quality for output image * * @return bool Success status */ function imageannotate($sourceFileName, $destinationFileName, $text, $font, $fontSize, array $fontColour = NULL, $x, $y, $rotation = 0, $outputQuality = 90) { $image = @imagecreatefromjpeg($sourceFileName); if ($image === false) { return false; } if (is_array($fontColour) && array_key_exists('r', $fontColour) && array_key_exists('g', $fontColour) && array_key_exists('b', $fontColour)) { $colour = imagecolorallocate($image, $fontColour['r'], $fontColour['g'], $fontColour['b']); if ($colour === false) { return false; } } else { $colour = @imagecolorallocate($image, 0, 0, 0); } if (@imagefttext($image, $fontSize, $rotation, $x, $y, $colour, $font, $text) === false) { return false; } return @imagejpeg($image, $destinationFileName, $outputQuality); }
NB. Для отладки я бы удалил символы @
.