Вниз
Скачать: CL | DM;

Bitmap.LoadFromStream для bmp, сделанных в разных программах   Найти похожие ветки 

 
Ал   (2003-11-14 11:28) [0]

Никто не встречался с таким эффектом:

Делаю в PhotoShop5.5 несколько 256-цветных bmp. Затем с помощью Stream записываю их в один файл (делаю библиотеку).

Когда читаю с помощью Bitmap.LoadFromStream, возникает интересный эффект:

- если картинки делались в PhotoShop, то при чтении из Stream они читаются правильно, НО после чтения каждой картинки нужно на 2 байта передвигать указатель вперед - иначе следующий прочитается с ошибкой;

- если картинки делались в Paint, то картинки читаются, передвигать указатель не нужно, а вот с последней картинкой бывают проблемы (если после нее еще что-то есть в Stream, напр., массив строк, то картинка может прочитаться с ошибкой).

В VCL не экспериментировал.

Есть какие-нибудь идеи?


 
SAGE   (2003-11-14 12:49) [1]

Такой эффект я замечал еще с PhotoShop3.
Он помоему всегда добавлял два абсолютно лишних байта к каждому файлу :)

Для себя я когда-то еще в далеком 1998 на TP написал утилитку, что-то вроде BMP-оптимизатора.
Например картинка содержит десяток цветов, а сохранена как Truecolor. После оптимизации такой битмап становится меньше как минимум в 4 или 8 раз!!! А если в картинке 2 цвета, то и во все 32 раза, причем наблюдается интересный эффект - получается двухцветная (не черно-белая) картинка, чего я не встречал еще ни в одном редакторе!!!
Понятное дело часть ненужных цветов в палитре (в случае 16-ти и 256-ти цветов) теряется.
Я вообще ни один битмап не добавляю к проектам предварительно не оптимизировав.


 
SPeller ©   (2003-11-14 15:14) [2]

А какая разница, что там фотошоп пишет? В заголовке файла всё-равно указывается размер, и фотошоповкий файл в заголовке имеет длину на 2 больше чем, например, из paint"а. Ты и у себя в библиотеке тоже записывай длину данных и ориентируйся по ней.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.039 c
7-1080036182
Victor!
2004-03-23 13:03
2004.04.11
Обмен данными по модему


1-1080231829
LedWorm
2004-03-25 19:23
2004.04.11
Как программно вызвать Hint ?


1-1080196979
X9
2004-03-25 09:42
2004.04.11
Ошибка при вызове функции из DLL.


14-1082455892
Матлабист
2004-04-20 14:11
2004.04.11
http://delphibase.endimus.ru/


7-1077118263
Maksss
2004-02-18 18:31
2004.04.11
alt+ctrl+del




   Наверх