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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> kol, tbitmap, загрузка из переменной 
:(
    Опции темы
lollollollol
Дата 7.2.2014, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Работаю с делфи7, в переменной типа string загружена png картинка.
Нужно её запихнуть в kol tbitmap без сохранения на диск.

пытался так
Код

          BMP.Create;
          BMP.Handle:=HBITMAP(@attach[1]);

Но прога вылетает с ошибкой, как это можно сделать?
PM MAIL   Вверх
Alexeis
Дата 7.2.2014, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



HBITMAP Это дескриптор объекта битмапа созданного функциями типа CreateDIBitmap / CreateDIBSection http://msdn.microsoft.com/en-us/library/wi...4(v=vs.85).aspx
  Такой же системный объект создается внутри VCL класса TBitMap , на KOL, я даже не помню чем заменили класс TBitMap. В любом случае из буфера нужно сначала загрузить битмап. Обычно это делается функцией LoadFromStream или LoadFromClipboardFormat . 


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

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

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


Опытный
**


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

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



там нет LoadFromClipboardFormat, есть только загрузка из файла и LoadFromStream, но как загрузить из LoadFromStream если у меня в string данные?
PM MAIL   Вверх
Alexeis
Дата 7.2.2014, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(lollollollol @  7.2.2014,  15:10 Найти цитируемый пост)
 но как загрузить из LoadFromStream если у меня в string данные? 

  Само по себе появление данных в строке непонятно, но если предположить, что там бинарный образ файла bmp, то сначала придется перекачать данные в объект TMemoryStream (или его аналог) методами write/writebuffer потом Position -> 0 и затем передать этот объект в LoadFromStream .


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

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

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


Опытный
**


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

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



var
Stream:=TStream
...
          BMP.Create;
          Stream.Create;
          Stream.Write(attach[1],length(attach));



вылетает с accesviolation


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


Опытный
**


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

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



Загрузку сделал, новая проблема

Код

  BMP:PBitMap;
  Stream:kol.PStream;
  attach:string;
  f:file;
  c:char;
  a:integer;
begin
  AssignFile(f,'C:\0ol339o1.png');
  Reset(f, 1);
  while not Eof(f) do begin
    BlockRead(f,c,1);
    attach:=attach+c;
  end;
  CloseFile(f);
  Stream:=NewMemoryStream;
  Stream.WriteStr(attach);
  BMP:=NewBitmap(0,0);
  BMP.LoadFromStreamEx(Stream);
  ImageAddColor(BMP^,BMP.Height,BMP.Width);
  ImageAddBW(BMP^,BMP.Height,BMP.Width);
  BMP.SaveToStream(Stream);
  Stream.Read(attach[1],Stream.Size);
  Stream.Free;
  BMP.Free;
  AssignFile(f,'C:\0ol339o1---NEW.png');
  Rewrite(f, 1);
  a:=0;
  while (a<length(attach))  do begin
    BlockWrite(f,attach[a+1],1);
    inc(a);
  end;
  CloseFile(f);
  exit;


  ImageAddColor(BMP^,BMP.Height,BMP.Width);
  ImageAddBW(BMP^,BMP.Height,BMP.Width);

Вместо размера(высота/ширина) нули, но при сохранении картинки на диск видно, что она там есть, как получить размер изображения?
Ох как мне кол мозги вынес уж

Это сообщение отредактировал(а) lollollollol - 8.2.2014, 06:14
PM MAIL   Вверх
lollollollol
Дата 8.2.2014, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хотя ошибаюсь
Код


  BMP.SaveToStream(Stream);
  attach:='';
  Stream.Read(attach[1],Stream.Size);


пусто, т.е. 
  BMP.LoadFromStreamEx(Stream);
не выполняет загрузку, почему?
PM MAIL   Вверх
lollollollol
Дата 8.2.2014, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



help me
PM MAIL   Вверх
lollollollol
Дата 8.2.2014, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

  BMP:PBitMap;
  Stream:kol.PStream;
  attach:array[0..9999999] of byte;
  f:file;
  c:byte;
  a:integer;
begin
  a:=0;
  AssignFile(f,'C:\1.bmp');
  Reset(f, 1);
  while not Eof(f) do begin
    BlockRead(f,c,1);
    attach[a]:=c;
    inc(a);
  end;
  CloseFile(f);
  Stream:=NewMemoryStream;
  Stream.Write(attach,a);
  BMP:=NewBitmap(0,0);
//  BMP.LoadFromFile('C:\1.bmp');
  if (BMP.LoadFromStreamEx(Stream)=true) then
  MessageBox(0,'true','',0) else
  MessageBox(0,'false','',0);

False , как бы узнать ошибку то...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

FAQ раздела лежит здесь!


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

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


 




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


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

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