Вставьте PNG с альфа-каналом, используя FPDF (PHP)

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

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


person Raptor    schedule 17.06.2010    source источник


Ответы (3)


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

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

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

person qualbeen    schedule 14.03.2011

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

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

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

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

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

function Image(string file, float x, float y [, float w [, float h [, string type [, смешанная ссылка [, boolean isMask [, int maskImg]]]]]])

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

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

Те же параметры, что и у исходного метода Image(), но без параметра типа.

person Cemen    schedule 13.04.2011

Это сработало для меня, спасибо, ребята. В основном я включил расширение выше (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(), и это решило мою проблему.

Спасибо!!!

person lcainswebdeveloper    schedule 19.11.2013