加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:42:24 所属栏目:PHP教程 来源:网络整理
导读:这是我的 ImageMagick代码,通过在默认目录中创建文件名为“coloured_font.png”的新图像,可以在我的网络服务器上正常工作… ?php $cmd = " -background none -pointsize 60 -font Times-Roman -fill red ". " -strokewidth 1 -stroke black label:"google"
这是我的 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’而不将其保存在其他地方……所以请任何人帮我在屏幕上创建和显示图像而不保存它.

解决方法

您可以使用特殊的内联:图像格式(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,并且它们的外壳都有:

>使用格式提示png:告诉它输出应该是PNG格式;
>通过指定fd:1,使用stdout作为输出通道(而不是文件);
>将输出直接输入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应该不难.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读