从内存 ImageMagick 解码 svg
Decode svg from memory ImageMagick
如何从缓冲区解码 svg 图像?我知道 SVG 只是文本,但除了从磁盘读取之外,我不知道如何将它们解析为 Magick::Image。
#include <Magick++.h>
#include <stdio.h>
using namespace Magick;
int main() {
printf("EnableOpenCL ret: %d\n", Magick::EnableOpenCL());
Magick::Image svgImage;
svgImage.read("input.svg"); // first read file
svgImage.magick("png"); // then specify PNG format
svgImage.write("output.png");
return 0;
}
您可以将缓冲区复制到 Magick++ 的 Magick::Blob
并将其传递给 Magick::Image
构造函数。
Magick::Blob svgData(memory_ptr, memory_length);
Magick::Image svgImage(svgData, svgRenderSize, "SVG");
其中memory_ptr
是svg数据在内存中的地址,memory_length
是memory_ptr
的总字节大小,svgRenderSize
是Magick::Geometry
实例图像大小。
如何从缓冲区解码 svg 图像?我知道 SVG 只是文本,但除了从磁盘读取之外,我不知道如何将它们解析为 Magick::Image。
#include <Magick++.h>
#include <stdio.h>
using namespace Magick;
int main() {
printf("EnableOpenCL ret: %d\n", Magick::EnableOpenCL());
Magick::Image svgImage;
svgImage.read("input.svg"); // first read file
svgImage.magick("png"); // then specify PNG format
svgImage.write("output.png");
return 0;
}
您可以将缓冲区复制到 Magick++ 的 Magick::Blob
并将其传递给 Magick::Image
构造函数。
Magick::Blob svgData(memory_ptr, memory_length);
Magick::Image svgImage(svgData, svgRenderSize, "SVG");
其中memory_ptr
是svg数据在内存中的地址,memory_length
是memory_ptr
的总字节大小,svgRenderSize
是Magick::Geometry
实例图像大小。