Вставьте PNG с альфа-каналом, используя FPDF (PHP) - PullRequest
4 голосов
/ 17 июня 2010

В официальной документации FPDF сказано, что альфа-канал не поддерживается для PNG.

Есть ли обходной путь?

Ответы [ 3 ]

5 голосов
/ 13 апреля 2011

Попробуйте это расширение для FPDF:

http://valentin.dasdeck.com/php/fpdf/fpdf_alpha/

Краткое описание со страницы:

Этот скрипт позволяет использовать изображения (PNG или JPG) с альфа-каналами. Альфа-канал может быть либо поставлен как отдельный 8-битный PNG («маска»), или, для PNG, также внутренний Альфа-канал может быть использован. Для последнее, расширение GD 2.x требуется.

Указание отдельной маски для изображения несколько преимуществ: - БД не требуется. - Лучшее качество (полный 8-битный альфа-канал, тогда как GD только внутри поддерживает 7-битные альфа-каналы) - намного быстрее (нужно извлечь встроенный альфа-канал пиксель-накрест) * +1011 *

Функция Image (строковый файл, с плавающей запятой x, float y [, float w [, float h [, тип строки [, смешанная ссылка [, логическое значение isMask [, int maskImg]]]]]])

Те же параметры, что и для оригинала Image () - метод, с 2 дополнительными (необязательно) параметры: isMask: if указано и верно, изображение используется в качестве маски для других изображений. В этом случай, параметры х, у, ш и ч будет игнорироваться и маска изображения Сам не виден на странице. maskImg: номер ресурса изображения (как возвращается ранее вызванным Image () с параметром isMask, установленным в true) который будет использоваться в качестве маски для этого изображение.

функция ImagePngWithAlpha (строка файл, плавающий x, плавающий y [, плавающий w [, float h [, смешанная ссылка]]])

Те же параметры, что и для оригинала Image () - метод, но без типа параметр.

5 голосов
/ 14 марта 2011

Если вам нужно поместить прозрачное изображение поверх другого: используйте встроенные в PHP функции для копирования одного изображения в другое. Затем вы получите новую картинку, содержащую оба изображения. Сохранить как не-альфа-PNG и вставить.

Здесь есть пример здесь кода, необходимого для объединения изображений.

Если вы хотите, чтобы текст был виден под вашей картинкой: сначала вставьте картинку, а затем введите текст в документ.

1 голос
/ 19 ноября 2013

Это помогло мне, ребята.Я в основном включил расширение выше (http://valentin.dasdeck.com/php/fpdf/fpdf_alpha/), а затем расширенные классы следующим образом:

В fpdf_tpl.php require ('PDF_ImageAlpha.php');

class FPDF_TPL extends PDF_ImageAlpha

В PDF_ImageAlpha.php:

class PDF_ImageAlpha extends FPDF{
Inside of here I chaged the image() function to F_image() to avoid clashing (probably       should have used namespaces). With a quick search and replace you will see that this needs replacing 2 more times.
}

Затем в моем файле workhorse.php я вызвал функцию F_image () вместо image (), и это исправило мою проблему.

Спасибо !!!

...