не записывается цвет в bitmap.canvas.pixels[x,y]
Модератор: Модераторы
- alu
- новенький
- Сообщения: 33
- Зарегистрирован: 15.01.2007 11:54:14
- Откуда: Саратов
- Контактная информация:
не записывается цвет в bitmap.canvas.pixels[x,y]
у меня стоит глубина цвета на мониторе 16бит при загрузке битмапа из файла глубиной цвета 24бит (loadfromfile(filename)) видимо выставляется системная глубина цвета, потому что когда я делаю вот это
(исходника сейчас под рукой нет..приблизительно воспроизвожу)
bitmap.loadfromfile(filename);
temp:=bitmap.canvas.pixels[1,1]; //там белый цвет
dec(temp);
bitmap.canvas.pixels[1,1]:=temp;
temp2:=bitmap.canvas.pixels[1,1]; //
В итоге temp<>temp2 , т.е. цвет не поменялся.
Вопрос - как работать в моем случае именно с форматом 24бита, а не системным.
т.е. загрузить в формате 24бита и работать в этом же формате, потом и сохранить в формате 24бита.
bitmap.pixelformat:=pf24bit //до загрузки роли не играет
bitmap.pixelformat:=pf24bit //если после загрузки - безнадежно портит изображение
через временный битмап пробовал, НО нельзя терять младшие биты!!!
Стенографию пытаюсь сделать. (хранить небольшую информацию в изображении).
(исходника сейчас под рукой нет..приблизительно воспроизвожу)
bitmap.loadfromfile(filename);
temp:=bitmap.canvas.pixels[1,1]; //там белый цвет
dec(temp);
bitmap.canvas.pixels[1,1]:=temp;
temp2:=bitmap.canvas.pixels[1,1]; //
В итоге temp<>temp2 , т.е. цвет не поменялся.
Вопрос - как работать в моем случае именно с форматом 24бита, а не системным.
т.е. загрузить в формате 24бита и работать в этом же формате, потом и сохранить в формате 24бита.
bitmap.pixelformat:=pf24bit //до загрузки роли не играет
bitmap.pixelformat:=pf24bit //если после загрузки - безнадежно портит изображение
через временный битмап пробовал, НО нельзя терять младшие биты!!!
Стенографию пытаюсь сделать. (хранить небольшую информацию в изображении).
- Рождённый_в_СССР
- новенький
- Сообщения: 65
- Зарегистрирован: 08.08.2007 01:03:26
- Откуда: Саратов
вероятнее всего преобразование происходит на функции loadfromfile, так я думаю), проверить не могу...
поэтому вам наверное придётся хранить в буфере 24-битный образ, там же его изменять и по случаю выводить из буфера на экран... это помойму лучше, чем брать цвет из объекта bitmap или возможно отказаться от метода canvas.
поэтому вам наверное придётся хранить в буфере 24-битный образ, там же его изменять и по случаю выводить из буфера на экран... это помойму лучше, чем брать цвет из объекта bitmap или возможно отказаться от метода canvas.
- alu
- новенький
- Сообщения: 33
- Зарегистрирован: 15.01.2007 11:54:14
- Откуда: Саратов
- Контактная информация:
формат простой, пожалуй через файловые операции работать буду.
вот сам формат - может кому пригодится
заголовок всего 54 байта 14+40
-------------------------------------------------
Заголовок файла 2 байта (всего 14 байт)
Размер файла 4 байта
Не используется 4 байта
С какого байта начало растрового массива 4 байта
Доп. информация (всего 40 байт)
Длина доп.информации 4 байта
Ширина изображения 4 байта
Высота изображения 4 байта
Спец. информация 2 байта
Бит/пиксель 2 байта
Метод сжатия 4 байта
Длина растрового массива 4 байта
Горизонтальное разрешение 4 байта
Вертикальное разрешение 4 байта
Число цветов 4 байта
Число основных цветов 4 байта
Растровый массив - переменный длины верхний левый угол в конце массива.
-------------------------------------------------
вот сам формат - может кому пригодится
заголовок всего 54 байта 14+40
-------------------------------------------------
Заголовок файла 2 байта (всего 14 байт)
Размер файла 4 байта
Не используется 4 байта
С какого байта начало растрового массива 4 байта
Доп. информация (всего 40 байт)
Длина доп.информации 4 байта
Ширина изображения 4 байта
Высота изображения 4 байта
Спец. информация 2 байта
Бит/пиксель 2 байта
Метод сжатия 4 байта
Длина растрового массива 4 байта
Горизонтальное разрешение 4 байта
Вертикальное разрешение 4 байта
Число цветов 4 байта
Число основных цветов 4 байта
Растровый массив - переменный длины верхний левый угол в конце массива.
-------------------------------------------------
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
-
SovNarKom
- постоялец
- Сообщения: 389
- Зарегистрирован: 28.05.2005 10:37:39
- Откуда: Воронеж [vrn] [36]
- Контактная информация:
alexs
Весь этот объектный подход с ридерами... райтерами...
вот нужно мне загрузить png картинку - сразу в зависимостях Classes -> 100Кб.
По хорошему нужно всю непосредственную работу переносить на более низкий уровень, где был бы просто набор процедур, загружающий нужный формат в некоторый тип данных. А потом это можно было бы и обернуть в Classes, для совместимости.
Весь этот объектный подход с ридерами... райтерами...
вот нужно мне загрузить png картинку - сразу в зависимостях Classes -> 100Кб.
По хорошему нужно всю непосредственную работу переносить на более низкий уровень, где был бы просто набор процедур, загружающий нужный формат в некоторый тип данных. А потом это можно было бы и обернуть в Classes, для совместимости.
