我正在尝试使用Image Magick库(Magick ++ API)在图像上绘制一堆线条,总执行时间似乎相当大。
有没有办法优化IMagick绘图性能?
int SIZE = 700, LINES_NUM = 6000;
Image outputImage(Geometry(SIZE, SIZE), Color("white"));
for (int i = 0; i < LINES_NUM; i++) {
outputImage.draw(DrawableLine(lines[i].x1,lines[i].y1,
lines[i].x2,lines[i].y2));
}
答案 0 :(得分:0)
尽量避免重复Magick::Image.draw
次来电。
std::vector<Magick::Drawable> drawList;
for (int i = 0; i < LINES_NUM; i++) {
drawList.push_back(DrawableLine(lines[i].x1,lines[i].y1,
lines[i].x2,lines[i].y2));
}
outputImage.draw(drawList);
还要确保已使用OpenMP
支持编译ImageMagick库。如果你想要速度而不是质量,我建议在没有高动态范围图像--enable-hdri=no
和低量子深度--with-quantum-depth=8
的情况下重新编译。