Форум: "KOL";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизПроблема с 32-битным BitMap ом Найти похожие ветки
← →
dvk (2005-10-14 14:34) [0]Если BitMap имеет формат pf32bit и я пытаюсь сохранить его, а потом открываю его любым просмотрщиком, то вижу картинку с явно искажённой палитрой.
То же происходит, если я пытаюсь сначала преобразовать его в более низкое цветовое разрешение строкой вида:
bmp1.pixelformat:=pf24bit;
Потом сохраняю - всё равно палитра искажена.
Приходится идти напролом:
if bmp1.PixelFormat=pf32bit then
begin
tempbmp:=NewDIBBitmap(bmp1.Width, bmp1.Height, pf24bit);
for i:=0 to Pred(bmp1.Height) do
begin ps:=bmp1.scanline[i];
pd:=tempBMP.ScanLine[i];
for j:=0 to pred(bmp1.width) do
begin pd[j*3]:=ps[j*4]; pd[j*3+1]:=ps[j*4+1]; pd[j*3+2]:=ps[j*4+2] end;
end;
bmp1.Assign(tempBMP);
tempbmp.free;
end;
Это весьма неэлегантно. Может, закралась ошибка в процедуре исзменения цветового разрешения в KOL?
← →
Vladimir Kladov (2005-10-15 16:14) [1]что за версия KOL? (Вообще что-то весьма странное, такого не встречал) Хотя бы даже на приложении GrabScreen гляньте - там сохраняется в таком же формате, что и на Desktop-е текущее. Неужто и там искажается, если поставить TrueColor?
← →
dvk (2005-10-17 08:02) [2]Версия KOL 2.13.
Если интересно, вот скриншот с экрана после сохранения (размер 73 кБ)
http://img361.imageshack.us/img361/2627/24bit7df.png
Да, забыл добавить, всё вышесказанное было встречено мною после снятия скриншота по PrintScreen, затем bmp1.PasteFromClipBoard; bmp1.savetofile.
В Вашей программе, Владимир, действительно всё сохраняетсчя нормально, я даже специально поменял в процедуре CaptureRegion
Format := pf32bit;
Ещё одно. Видеокарта у меня интегрированная - Intel Extreme Graphic.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c