gpt4 book ai didi

php - 使用 ImageMagick 生成图像而不保存到文件但仍显示在网站上

转载 作者:可可西里 更新时间:2023-10-31 22:13:41 24 4
gpt4 key购买 nike

这是我的 ImageMagick 代码,它通过在默认目录中创建文件名为“coloured_font.png”的新图像在我的网络服务器上运行良好...

<?php 
$cmd = " -background none -pointsize 60 -font Times-Roman -fill red ".
" -strokewidth 1 -stroke black label:\"google\" ";
exec("convert $cmd coloured_font.png");
?>

但现在我在 Windows 上运行 ImageMagick,它不会在默认文件夹中创建任何图像文件,但 ImageMagick 应用程序运行良好(我已经通过创建缩略图进行了测试)。所以现在我的想法是在浏览器屏幕上显示“coloured_font.png”而不将其保存在其他任何地方......所以请任何人帮助我在屏幕上创建和显示图像而不保存它。

最佳答案

您可以使用特殊的 inline: 图像格式(ImageMagick 也支持读取文件)。这种格式是二进制数据的 base64 编码。

在 (Linux) 命令行上:

my_base64_png="$(
convert \
-background none \
-pointsize 60 \
-font Times-Roman \
-fill red \
-strokewidth 1 \
-stroke black \
label:\"google\" \
png:fd:1 \
| \
base64 -i - -o -)"

此命令使用了 ImageMagick 和 shell 的一些特殊技巧:

  • 使用格式提示 png: 告诉它输出应该是 PNG 格式;
  • 通过指定 fd:1 使用 stdout 作为其输出 channel (而不是文件);
  • 将输出直接输送到 base64 二进制文件的 stdin 中以对 PNG 进行编码;
  • 将 base64 编码的数据存储在环境变量 my_base64_png 中。

现在在您的 HTML 中内联 base64 图像数据(这应该适用于所有现代浏览器,但不适用于旧浏览器):

 <IMG SRC="data:image/png;base64,
echo "$(my_base64_png)"
ALT="google" WIDTH=214 HEIGHT=57 VSPACE=5 HSPACE=5 BORDER=0 />

 <IMG SRC="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAM4AAABJAQMAAABPZIvnAAAABGdBTUEAALGPC/xh
BQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA
OpgAABdwnLpRPAAAAAZQTFRFAAAA/wAAG/+NIgAAAAF0Uk5TAEDm2GYAAAABYktH
RACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAB6ElEQVQ4y+3UQY7bIBQG4IeQ
yqYaLhANV+iyi9FwpS69iGyiLuZYpepF6A1YskC8/uCA7SgZtVI3lcoiivkIxu/9
MdH/8U+N6el2pk0oFyibWyr1Q3+PlO2NqJV+/BnRPMjcJ9zrfJ/U+zQ9oAvo+QGF
d+npPqFQn++TXElkrEpEJhAtlTBR6dNHUuzIMhFnEhxAmJDkKxlmt7ATXDDJYcaE
r4Txqtkl42VYSH+t9KrD9b5nxZeog/LWGVHprGInGWVQUTvjDWXca5KdsowqyGSc
DrZRlGlQUl4kQwpUjiSS9gI9VdECZhHFQ2I+UE2CHJQfkNxTNKCl0RkURqlLowJK
1h1p3sjc0CJD39D4BIqD7JvvpH/GAxl2/YSq9mtHSHknga7OKNOHKyEdaFC2Dh1w
9VSJemBeGuHgMuh24EynK03YM1Lr83OjUle38aVSfTblT424rl4LhdglsUag5RB5
uBJSJBIiELSzaAeIN0pUlEeZEMeClC4cBuH6mxOlgPjC3uLproUCWfy58WPN/MZR
86ghc888yNdD0Tj8eAucasl2I5LqX19I7EmEjaYjSb9R/G1SYfQA7ZBuT5H6WwDt
UAfK1BOJmh/eZnKLeKvZ/vA8qonCpj1h6djfbqvW620Tva36++MXUkNDlFREMVkA
AAAldEVYdGRhdGU6Y3JlYXRlADIwMTItMDgtMjJUMDg6Mzc6NDUrMDI6MDBTUnmt
AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEyLTA4LTIyVDA4OjM3OjQ1KzAyOjAwIg/B
EQAAAA50RVh0bGFiZWwAImdvb2dsZSJdcbX4AAAAAElFTkSuQmCC"
ALT="google" WIDTH=214 HEIGHT=57 VSPACE=5 HSPACE=5 BORDER=0 />

将此程序翻译成 PHP 对您来说应该不难。 ;-)

正如我所说,ImageMagick 可以读取这种 inline: 格式(这里不用于读取)。但为了完整起见,让我向您展示如何:

  convert                                                                   \
'inline:image/png;data:,
iVBORw0KGgoAAAANSUhEUgAAAM4AAABJAQMAAABPZIvnAAAABGdBTUEAALGPC/xh
BQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA
OpgAABdwnLpRPAAAAAZQTFRFAAAA/wAAG/+NIgAAAAF0Uk5TAEDm2GYAAAABYktH
RACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAB6ElEQVQ4y+3UQY7bIBQG4IeQ
yqYaLhANV+iyi9FwpS69iGyiLuZYpepF6A1YskC8/uCA7SgZtVI3lcoiivkIxu/9
MdH/8U+N6el2pk0oFyibWyr1Q3+PlO2NqJV+/BnRPMjcJ9zrfJ/U+zQ9oAvo+QGF
d+npPqFQn++TXElkrEpEJhAtlTBR6dNHUuzIMhFnEhxAmJDkKxlmt7ATXDDJYcaE
r4Txqtkl42VYSH+t9KrD9b5nxZeog/LWGVHprGInGWVQUTvjDWXca5KdsowqyGSc
DrZRlGlQUl4kQwpUjiSS9gI9VdECZhHFQ2I+UE2CHJQfkNxTNKCl0RkURqlLowJK
1h1p3sjc0CJD39D4BIqD7JvvpH/GAxl2/YSq9mtHSHknga7OKNOHKyEdaFC2Dh1w
9VSJemBeGuHgMuh24EynK03YM1Lr83OjUle38aVSfTblT424rl4LhdglsUag5RB5
uBJSJBIiELSzaAeIN0pUlEeZEMeClC4cBuH6mxOlgPjC3uLproUCWfy58WPN/MZR
86ghc888yNdD0Tj8eAucasl2I5LqX19I7EmEjaYjSb9R/G1SYfQA7ZBuT5H6WwDt
UAfK1BOJmh/eZnKLeKvZ/vA8qonCpj1h6djfbqvW620Tva36++MXUkNDlFREMVkA
AAAldEVYdGRhdGU6Y3JlYXRlADIwMTItMDgtMjJUMDg6Mzc6NDUrMDI6MDBTUnmt
AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEyLTA4LTIyVDA4OjM3OjQ1KzAyOjAwIg/B
EQAAAA50RVh0bGFiZWwAImdvb2dsZSJdcbX4AAAAAElFTkSuQmCC' \
my_decoded.png

ImageMagick 不需要命令的 image/png; 部分(它甚至忽略它),因为它可以通过它自己的内置魔术数据库无论如何识别格式——但它不需要也不会受伤...

我还要指出,ImageMagick 的命令行长度限制为 5000 个字符,因此读取 inline: 数据不适用于较大的图片。 (目前我不知道在 HTML 中内联图像数据的限制是什么......)

关于php - 使用 ImageMagick 生成图像而不保存到文件但仍显示在网站上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12066298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com