- Код: Выделить всё
Bitmap.PixelFormat := pf8bit; // либо pf16bit, либо любой иной
Bitmap.SetSize(Width,Height);
Bitmap.SaveToFile('8bit.bmp');


.
Модератор: Модераторы
Bitmap.PixelFormat := pf8bit; // либо pf16bit, либо любой иной
Bitmap.SetSize(Width,Height);
Bitmap.SaveToFile('8bit.bmp');
function ConvertTo16Bit(aValue: TBitmap): TBitmap;
begin
Result := TBitmap.Create;
with Result do
if aValue.PixelFormat <> pf16bit then
begin
PixelFormat := pf16bit;
SetSize(aValue.Width,aValue.Height);
Canvas.Draw(0,0,aValue);
end
else
Assign(AValue);
end;
procedure TMBitmap.Allocate(SX, SY: integer);
var
DC: HDC;
begin
if BM <> 0 then
DeleteObject(BM); {удаляем старый битмэп, если был}
BM := 0;
PB := nil;
fillchar(BI, sizeof(BI), 0);
with BI.bmiHeader do {заполняем структуру с параметрами битмэпа}
begin
biSize := sizeof(BI.bmiHeader);
biWidth := SX;
biHeight := SY;
biPlanes := 1;
biBitCount := 24;
biCompression := BI_RGB;
biSizeImage := 0;
biXPelsPerMeter := 0;
biYPelsPerMeter := 0;
biClrUsed := 0;
biClrImportant := 0;
FLineSize := (biWidth + 1) * 3 and (-1 shl 2);
{размер строки(кратна 4 байтам)}
if (biWidth or biHeight) <> 0 then
begin
DC := CreateDC('DISPLAY', nil, nil, nil);
{замечательная функция (см.HELP), возвращает HBITMAP, позволяет сразу
разместить выделяемый битмэп в спроецированном файле, что позволяет
ускорять работу и экономить память при генерировании большого битмэпа}
{!} BM := CreateDIBSection(DC, BI, DIB_RGB_COLORS, pointer(PB), nil, 0);
DeleteDC(DC); {в PB получаем указатель на битмэп-----^^}
if BM = 0 then
Error('error creating DIB');
end;
end;
end;
Alex2013 писал(а):http://www.efg2.com/Lab/ImageProcessing/Scanline.htm
Alex2013 писал(а):А что будет если загрузить 8бит картинку заранее
(И уже по ней рисовать )
vitaly_l писал(а):Либо я что-то делаю неправильно, либо в TBitmap - страшный и коварный баг, который всегда сохраняет только 24 bit файлы.
if riqfPalette in AFlags then
begin
DebugLn('TGtk2WidgetSet.RawImage_QueryDescription: riqfPalette not (yet) supported');
Exit(False);
end;
kazalex писал(а):Вряд ли это баг, скорее недоделка
vitaly_l писал(а):Только pf24bit можно?
vitaly_l писал(а):что-то не то... загрузил 8 битную картинку, обаботал и пересохранил.
Всё сохранилось в 8 битах, соответственно я что-то неправильно делаю.
Alex2013 писал(а):А что будет если загрузить 8бит картинку заранее
(И уже по ней рисовать )
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 247