Увеличьте изображение на Xlib - PullRequest
1 голос
/ 24 июля 2011

У меня есть изображение, которое я хочу увеличить и отобразить. В настоящее время я использую наивный подход:

allocate bigger image
use nearest-neighbor interpolation to fill it in.
put the whole image on a pixmap.

Который работает, но медленно и ползет, когда я подхожу к большему уровню масштабирования, например, 800%. Gimp, однако, может увеличить масштаб до 3200% и при этом чувствовать себя быстро. Какой подход принят здесь? Должен ли я заполнять только один экран за раз? Но тогда как насчет прокрутки: не будет ли выполнять интерполяцию, и XPutImage, и XCopyArea для каждой производительности уничтожения?

Ответы [ 2 ]

1 голос
/ 24 июля 2011

Большинство современных приложений X11 не используют Xlib напрямую, если вообще используют.Я думаю, что Gimp рендерит увеличенное изображение в сам буфер и рисует его в окне, а не работает с изображением в XImage.

1 голос
/ 24 июля 2011

Я не эксперт в Xlib, но, по моему мнению, хорошим подходом было бы рисовать только увеличенную часть, вместо вычисления интерполяции всего изображения.для исполнения вы можете скопировать часть старого увеличения, которая все еще видна в новой позиции, и вычислить интерполяцию «обнаруженных» пикселей.Например, при прокрутке вниз можно скопировать нижнюю часть предыдущего изображения и вставить ее выше, а затем вычислить / нарисовать новые видимые элементы в нижней части.

...