PHP & Imagemagick: визуализировать таблицу как изображение, но размыть нижний край изображения - PullRequest
0 голосов
/ 29 июня 2018

Я ищу PHP-скрипт, который отображает данные таблицы в виде изображения, но размывает содержимое после, например, пятой строки.

Мой пример из Википедии.

Некоторые коммерческие веб-сайты / газеты пытаются дразнить своих клиентов, показывая предварительный просмотр некоторых данных, но пикселируют самую низкую их часть.

Теперь я тоже должен сделать такую ​​нечестную вещь. Знаете ли вы какую-либо библиотеку PHP, которая уже поддерживает это? Я не смог найти хорошее название для того, что мне нужно, поэтому было трудно найти что-то хорошее.

Заранее спасибо.

pixelated

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете создать таблицу, как вы делаете сейчас. Затем используйте Imagick, чтобы размыть все после некоторого y (координата линии). Извините, я знаю только Imagemagick, который используется Imagick, а не сам Imagick. Вот как я бы сделал это в Imagemagick. Я бы размыл входное изображение. Затем я создал бы изображение маски, которое было бы черным над желаемой линией и белым под ней. Затем я бы скомбинировал входные данные, размытое изображение, используя маску, чтобы получить желаемые результаты. Я взял ваше изображение выше и обработал его так:

Входной сигнал: enter image description here

bottomy=676
wd=`convert image.png -format "%w" info:`
ht=`convert image.png -format "%h" info:`
convert image.png \( -clone 0 -blur 0x5 \) \( -size ${wd}x${bottomy} xc:black -background white -extent ${wd}x${ht} \) -composite result.png

Результат: enter image description here

Вы можете получить ширину и высоту вашего ввода в PHP напрямую. Затем используйте Imagick blurImage (), чтобы размыть копию. Смотри http://us3.php.net/manual/en/imagick.blurimage.php

Затем создайте маску, используя newImage () для черной части http://us3.php.net/manual/en/imagick.newimage.php. Затем используйте exteImage () для белой части. См http://us3.php.net/manual/en/imagick.extentimage.php

Тогда сделай композит. Смотри http://us3.php.net/manual/en/imagick.compositeimage.php

Однако похоже, что CompositImage () допускает только два изображения. Поэтому вы должны создать маску и поместить ее в альфа-канал размытого изображения. Затем отмените маску и поместите ее в альфа-канал входного изображения. Это можно сделать с помощью CompositImage (), используя COMPOSITE_COPYOPACITY. Как только вы это сделаете, вы можете сгладить изображения () двух изображений вместе, чтобы сделать вывод. См http://us3.php.net/manual/en/imagick.flattenimages.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...