Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Oleg Goodyckov                       2:5020/400     23 Dec 2002  14:18:23
 To : Ilya Anfimov
 Subject : Re: XCreateImage и XPutImage
 -------------------------------------------------------------------------------- 
 
 On Sun, Dec 22, 2002 at 04:45:18PM +0000, Ilya Anfimov wrote:
 
 > >
 > >Проблема есть такая: читаю из файла в память картинку размерами 
 > >768 х 576 х 24 (то есть на пиксель - 3 байта). Создаю процедурой
 > >XCreateImage имидж и процедурой XPutImage вывожу его в окно размерами 
 > >192 х 144.
 > >
 > >По высоте получается все хорошо. Hо по ширине картинка получается втрое
 > >шире. И происходит сие потому, что каждый байт строки исходного
 > >изображения отображается в отдельный пиксель целевой картинки. Так что она
 > >состоит из вертикальных полос красного, зеленого и синего цветов,
 > >промодулированных по яркости. То есть все, как положенно, но почему байт
 > >попадает в пиксель?
 > >Впечатление такое, что какая-то из сабжевых процедур воспринимает исходную
 > >картинку не как 24-разрядную, а как 8-разрядную. Hо
 > >Screen->root_visual->bits_per_rgb я устанавливал в 24 и никакого
 > >результата оно не дало. То есть, отношения к делу не имееют.
 > >
 > >Кто подскажет, где чего крутить?
 > 
 >  1)  Первый  вариант  при  таких  приколах  --  посмотреть  на те
 > творения, где всё работает. Hу не знаю, например, на  display  от
 > ImageMagick какой-нибудь.
 
 Собственно, с работающего примера и слизано. Только там исходная картинка
 имеет те же размеры, что и целевая. Так что преобразований форматов не
 требуется. В остальном - все один к одному. 
 
 >  2)  X11  в  этом  месте  работает  как  описано  в документации.
 > Следовательно, глюки у тебя. Следовательно, без примера кода  это
 > обсуждение будет весьма отвлечённым. 
 
 Ты имеешь в виду мой код? Вот он.
 
 Место, где создается:
   src1_win.c_image = XCreateImage (XtDisplay (src1_win.root),
             DefaultVisual (XtDisplay(src1_win.root), 0), 24, ZPixmap,0, 
       (char*)src1_win.source->channels(1)->frame,
             src1_win.source->vfmt.fmt.pix.width,      // исх. ширина - 768
             src1_win.source->vfmt.fmt.pix.height,16,  // исх. высота - 576
             src1_win.source->vfmt.fmt.pix.width*3*4); // 768/192=4 - новая
                      //           ширина
 
 Место, где отрисовывается:
     XPutImage (XtDisplay (src1_win.c_view), XtWindow (src1_win.c_view),
                  src1_win.gc, src1_win.c_image, 0, 0, 0, 0, 192, 144);
 
 192x144 - размеры целевой картинки.
 
 > Кстати, и твоё рассуждение о промодулированных   полосах   мне    тоже
 > кажется    несколько расплывчатым.
 
 Как же его уточнить? Hу вот, к примеру, беру Гимп, захватываю картинку,
 которую отрисовываю выше приведенным кодом, увеличиваю и рассматриваю.
 Вижу, что вся картинка состоит из вертикальных чредующихся полос -
 красного, зеленого и синего цвета. Полосы промодулированы по яркости и
 имеют ширину один пиксель. Из чего я делаю вывод, что в этот пиксель
 попадает байт исходного изображения. А он как, известно, описывает яркость
 именно какого-то одного цвета.
 По этой же причине целевая картинка получается втрое шире.
 Что я еще могу уточнить?
 
 >  3)  Кстати, в качестве отвлечённого обсуждения: ты случайно for-
 > mat как XYPixmap не поставил? А то привычное ещё с DOSовых времён
 > расположение -- это ZPixmap.
 
 ZPixmap, как указано выше.
 --- ifmail v.2.15dev5
  * Origin: unknown (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 XCreateImage и XPutImage   Oleg Goodyckov   19 Dec 2002 18:58:27 
 Re: XCreateImage и XPutImage   Ilya Anfimov   22 Dec 2002 20:45:18 
 Re: XCreateImage и XPutImage   Oleg Goodyckov   23 Dec 2002 14:18:23 
 Re: XCreateImage и XPutImage   Ilya Anfimov   25 Dec 2002 18:39:34 
 Re: XCreateImage и XPutImage   Oleg Goodyckov   28 Dec 2002 12:07:25 
 Re: XCreateImage и XPutImage   Ilya Anfimov   28 Dec 2002 21:38:44 
 Re: XCreateImage и XPutImage   Oleg Goodyckov   08 Jan 2003 16:17:42 
 Re: XCreateImage и XPutImage   Ilya Anfimov   09 Jan 2003 17:12:22 
Архивное /ru.linux/1864326f5b6b8.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional