Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Bitmap -> String, Перевод картинки в 16-ричную строку. 
V
    Опции темы
iddqd
Дата 11.12.2006, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: 0
Всего: 2



Необходимо TBitmap перевести в строку.
К каждому байту битмапа применить BinToHex. Но как обратиться к определённому байту?!


--------------------
PM MAIL   Вверх
Snowy
Дата 11.12.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Bitmap.ScanLines
PM MAIL   Вверх
Matematik
Дата 11.12.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



Сохранить в TMemoryStream, и обращаться к массиву байтов m.Memory
Примерно так
Код

var p:PChar;
p:=PChar(MеmoryStream.Memory);
for j:=0 to MеmoryStream.Count-1 do
begin
  p[j] // байт
end

PM MAIL WWW ICQ   Вверх
Snowy
Дата 11.12.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Или сделать SaveToStream и переводить в HEX уже его - тогда сохранится и прочая информация, акромя самих пикселей (размер, глубина цвета и т.д.)
PM MAIL   Вверх
Romikgy
Дата 11.12.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Код

var sm:TmemoryStream;
 sx: string;
 bm:Tbitmap;

begin
 sm:=TmemoryStream.create;
bm.savetostream(sm);
sm.position:=0;
setlength(sx,sm.size);
copymemory(@sx[1],sm.memory,sx.size);
sm.free;
end;

вроде так


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 11.12.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Romikgy, неа. Не так.
Да и человеку строка в HEX нужна, а не записать картину в стринг.
PM MAIL   Вверх
iddqd
Дата 11.12.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: 0
Всего: 2



Пробывал много вариантов.
Последний такой:
Код

  ms := TMemoryStream.Create;
  Bmp.SaveToStream(ms);
  p := PChar(ms.Memory);
  SetLength(pc, ms.Size);
  BinToHex(PCHar(pc), ms.Memory, ms.Size);
  ms.Free;

Никак не могу заполнить массив pc smile


--------------------
PM MAIL   Вверх
Romikgy
Дата 11.12.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Код

var s1:string;

begin
 SetLength(s1,ms.Size*2);
BinToHex(@s1[1], ms.Memory, ms.Size);
end;


Добавлено @ 12:36 
Цитата(Snowy @  11.12.2006,  10:47 Найти цитируемый пост)
Romikgy, неа. Не так.

тогда может так?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
iddqd
Дата 11.12.2006, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: 0
Всего: 2



Romikgy, так s1 - пустая строка smile


--------------------
PM MAIL   Вверх
Alexeis
Дата 11.12.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



 smile BinToHex(ms.Memory, PChar(s1), ms.Size);
Цитата

procedure BinToHex(Buffer, Text: PChar; BufSize: Integer);



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Matematik
Дата 11.12.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



Как-то так
Код

function BitmapToHex(Bitmap:TBitmap):string;
var m : TMemoryStream;
begin
  M := TMemoryStream.Create;
  try
    Bitmap.SaveToStream(m);
    SetLength(Result, m.Size*2); // вид $XX
    BinToHex(m.Memory, @(Result[1]), m.Size);
  finally
    M.Free;
  end
end;

PM MAIL WWW ICQ   Вверх
Romikgy
Дата 11.12.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(iddqd @  11.12.2006,  11:39 Найти цитируемый пост)
Romikgy, так s1 - пустая строка

упс перепутал местами smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
iddqd
Дата 11.12.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 16.11.2005

Репутация: 0
Всего: 2



Спасибки. Работает. + в репутацию.


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.