Magick ++用CGI显示图像

时间:2015-06-06 15:43:04

标签: c++ imagemagick cgi jpeg magick++

我最近开始使用Magick ++(ImageMagick的C ++ API),目标是创建一个可以显示随机生成的图像的网站。我正在尝试编写一个CGI脚本,它将创建一个JPEG图像,设置其像素的颜色,然后将图像信息返回为Content-type: image/jpg

阅读文档,我只找到将图像文件写入磁盘的功能。我没有看到一个会按照std::cout << Imagestd::cout << Blob

的方式做我希望做的事情。

我的目标是能够在网页中显示脚本生成的图像,而无需将图像写入磁盘。

我知道PerlMagick有一个显示功能可以完成我想做的事情 - 我想知道我是否可以用Magick ++做同样的事情。

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找blob - Binary Large Objects 。基本上,您创建类型为Image的图像和类型为Blob的blob。您可以通过读取文件或生成随机数据来填充图像,然后将图像写入blob(对其进行编码),然后将其写入用户的浏览器。

请原谅我无用的C / C ++技能......

Image  image;
Blob   blob;

// set type to JPEG
image.magick("JPEG");   

// generate/read/fill image here
image.read("image.jpg");

// encode image as JPEG
image.write(&blob);   

// now send MIME type to browser
std::cout << "Content-type: image/jpeg" << CRLF;

// ... followed by blob
write(1,(char*)blob.data(),blob.length());