我有一个想要放大并显示的近似值。我现在采用的是一种天真的方法:
allocate bigger image
use nearest-neighbor interpolation to fill it in.
put the whole image on a pixmap.这是有效的,但速度很慢,一旦我接近更大的缩放级别,比如800%,它就会爬行。然而,这个笨拙的人可以放大到3200%,仍然感觉很快活。这里采用的方法是什么?我应该一次只填满一个屏幕吗?但是滚动呢:不是在每次暴露时执行插值、XPutImage和XCopyArea就会降低性能吗?
发布于 2011-07-25 02:43:03
我不是Xlib专家,但在我看来,一个好的方法是只绘制缩放部分,而不是计算整个图像的插值。
对于滚动,如果你正在寻找性能,你可以复制在新位置仍然可见的旧缩放部分,并计算“发现”像素的插值。例如,向下滚动时,您可以复制前一个图像的底部并将其粘贴到更高的位置,然后在底部计算/绘制新的可见内容。
发布于 2011-07-25 03:05:51
大多数现代X11应用程序都不太直接使用Xlib。我的猜测是,Gimp将放大的图像渲染到缓冲区中,并将其绘制到窗口中,而不是在XImage中处理图像。
https://stackoverflow.com/questions/6808160
复制相似问题