Magick++ 使用 CGI 显示图像
Magick++ to display an image with CGI
我最近开始使用 Magick++(ImageMagick 的 C++ API),目的是创建一个可以显示随机生成的图像的网站。我正在尝试编写一个 CGI 脚本来创建一个 JPEG 图像,设置其像素的颜色,然后 return 图像信息为 Content-type: image/jpg
。
翻阅文档,只找到将图像文件写入磁盘的函数。我没有看到可以按照 std::cout << Image
或 std::cout << Blob
的方式做我希望做的事情
我的目标是能够在网页中显示脚本生成的图像,而不需要将图像写入磁盘。
我知道 PerlMagick 有一个显示功能,可以做我想做的事情 - 我想知道我是否可以用 Magick++ 做同样的事情。
我认为您正在寻找 blob - 二进制大对象。基本上,您创建一个 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());
我最近开始使用 Magick++(ImageMagick 的 C++ API),目的是创建一个可以显示随机生成的图像的网站。我正在尝试编写一个 CGI 脚本来创建一个 JPEG 图像,设置其像素的颜色,然后 return 图像信息为 Content-type: image/jpg
。
翻阅文档,只找到将图像文件写入磁盘的函数。我没有看到可以按照 std::cout << Image
或 std::cout << Blob
我的目标是能够在网页中显示脚本生成的图像,而不需要将图像写入磁盘。
我知道 PerlMagick 有一个显示功能,可以做我想做的事情 - 我想知道我是否可以用 Magick++ 做同样的事情。
我认为您正在寻找 blob - 二进制大对象。基本上,您创建一个 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());