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


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Ilya Anfimov                         2:5020/400     25 Dec 2002  18:39:34
 To : Oleg Goodyckov
 Subject : Re: XCreateImage и XPutImage
 -------------------------------------------------------------------------------- 
 
 On Mon, 23 Dec 2002 10:18:23 +0000 (UTC),
 Oleg Goodyckov <og@videoproject.kiev.ua> wrote:
 
 >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 и никакого
 >> >результата оно не дало. То есть, отношения к делу не имееют.
 
  А  зачем  ты  его  устанавливал там? Оно вообще так не ставится.
 Hасколько я  помню,  в  XFree  оно  меняется  только  при  старте
 сервера.   Возможно,  что  ещё  в  конфигах где-нибудь есть. И во
 всяком случае не отдельные элементы, а только в целом на одно  из
 поддерживаемых сервером.
 >> >
 >> >Кто подскажет, где чего крутить?
 >> 
 >>  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 - новая
 
  Последней  строчки совсем не понял. Откуда тут ещё "*4" взялось?
  И два момента кстати: во-первых, я всегда опасался XCreateImage.
 Там  же  вроде написано, что он byte_order и bits_order с сервера
 берёт? С этим же заколебёшься разбирать, если картинка не с  того
 же  сервера  получена.  Хотя это, конечно, может быть и враньё. И
 по этому же поводу: bitmap_unit для TrueColor у XFree обычно  32.
 То    есть    "r,g,b,пропуск".   А   ты   случайно   там   подряд
 "r,g,b,r,g,b,..."  не зафигачил? Если так,  то  многое  стало  бы
 понятнее.
  Во-вторых,  а  чего  у  тебя bitmap_pad всего 16? Hе, это мелочь
 вроде и рояли не играет, но все вроде сейчас тоже в 32  на  True-
 Color ставят. Хотя это совсем мелочь, насколько я понимаю.
 
 >                       //           ширина
 >
 >Место, где отрисовывается:
 >    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 - размеры целевой картинки.
 
 [skipped]
 
 >
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (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/1511544212fe.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional