Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Там г..код, собственно. Ну ладно, сейчас.
- - - Добавлено - - -
Вот кусок, который расковыривает сами пиксели и сохраняет все это в формате, годном для 4-битного бмпОсторожно! Г...КОД!!!
Код://Обрабатываем массив пикселей for row:=0 to PicHeight-1 do begin InSrc:=($13+(PicHeight-row-1)*PicWidth*BPCount); for col:=0 to PicWidth-1 do begin for pix:=0 to 7 do begin InSrcTp:=InSrc; if (pix mod 2)=0 then begin ColByte:=%00000000; if (BPMask and %00000001)<>0 then begin ColByte:=ColByte or (((File4View[InSrcTp] and (%10000000>>pix))>>(7-pix))<<0); Inc(InSrcTp,PicWidth); end; if (BPMask and %00000010)<>0 then begin ColByte:=ColByte or (((File4View[InSrcTp] and (%10000000>>pix))>>(7-pix))<<1); Inc(InSrcTp,PicWidth); end; if (BPMask and %00000100)<>0 then begin ColByte:=ColByte or (((File4View[InSrcTp] and (%10000000>>pix))>>(7-pix))<<2); Inc(InSrcTp,PicWidth); end; if (BPMask and %00001000)<>0 then begin ColByte:=ColByte or (((File4View[InSrcTp] and (%10000000>>pix))>>(7-pix))<<3); Inc(InSrcTp,PicWidth); end; ColByte:=ColByte<<4; end else begin if (BPMask and %00000001)<>0 then begin ColByte:=ColByte or (((File4View[InSrcTp] and (%10000000>>pix))>>(7-pix))<<0); Inc(InSrcTp,PicWidth); end; if (BPMask and %00000010)<>0 then begin ColByte:=ColByte or (((File4View[InSrcTp] and (%10000000>>pix))>>(7-pix))<<1); Inc(InSrcTp,PicWidth); end; if (BPMask and %00000100)<>0 then begin ColByte:=ColByte or (((File4View[InSrcTp] and (%10000000>>pix))>>(7-pix))<<2); Inc(InSrcTp,PicWidth); end; if (BPMask and %00001000)<>0 then begin ColByte:=ColByte or (((File4View[InSrcTp] and (%10000000>>pix))>>(7-pix))<<3); Inc(InSrcTp,PicWidth); end; MBuffer.WriteByte(ColByte); end; end; Inc(InSrc); end; end;[свернуть]
Я предупреждал
- - - Добавлено - - -
Ну и да. Еще вопросик. RMB и RBR ничем не отличаются? Просто варианты расширений?
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Примерно так делал, когда преобразовывал картинки от спектрума. Но эти сдвиги мне не понравились, поэтому, просто развернул третий вложенный цикл. Писать чуть больше, но выполняется проще и быстрее.
Кстати, у вас в первой ветке, когда pix чётное, разве не должно в конце сдвигаться на 4, 5, 6 и 7? А то все биты попадают в 4 младших бита BMP.
- - - Добавлено - - -
Созданный программой sprview файл .rmb этой же процедурой не открылся. Похоже там байты плоскостей идут не построчно, а целиком.
- - - Добавлено - - -
Точно, там только распределение по плоскостям отличается, а палитра, размеры и используемые плоскости одинаковые.
Ещё значение 0 в байте размера означает 256.![]()
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)