Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2015, 00:31   #1
tatosha
 
Регистрация: 19.10.2014
Сообщений: 9
Сообщение Помогите с TJpegimage and TMemoryStream

1. Записал картинку в ini-файл
2. Считать не могу. HELP ME! Выдает ошибку(#51 которая на фото)

Код:
procedure TForm1.INI_open;
var
  Ini : TIniFile;
  ms : TMemoryStream;
  jp:TJpegImage;
begin

  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'settings.ini');
  try
    ms := TMemoryStream.Create;
     jp:=TJpegImage.Create;
    try
      Ini.ReadBinaryStream('General', 'Picture', ms);
      ms.Position := 0;
      jp.LoadFromStream(ms);
     Image1.Picture.Assign(jp);
    finally
      jp.Free;
      ms.Free;

    end;
  finally
    Ini.Free;
  end;
end;


procedure TForm1.INI_close;
var
 Ini:TiniFile;
 ms:TMemoryStream;
begin
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'settings.ini');
try
    ms:=Tmemorystream.Create;
    try
      Image1.Picture.Graphic.SaveToStream(ms);
      ms.Position := 0;
      Ini.WriteBinaryStream('General', 'Picture', ms);
    finally
      ms.Free;
    end;
  finally
    Ini.Free;
  end;
end;
Изображения
Тип файла: jpg Снимок.jpg (11.2 Кб, 150 просмотров)

Последний раз редактировалось Stilet; 01.06.2015 в 07:54.
tatosha вне форума Ответить с цитированием
Старый 01.06.2015, 08:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Image1.Picture.Graphic.SaveToStream (ms);
А ты уверен что в стрим идет JPEG а не его развернутый битмап?
Я бы на твоем месте:
1) Засомневался и сначала из Image1.Picture высаживал в JpegImage, а потом его уже сохранял
2) Засомневался и при считывании из ИНИ сначала считывал бы в TBitmap, а уже потом ассигнировал его в Jpeg.
3) Не хранил бы в ИНИ файле картинки!!!!!!!
4) Не хранил бы в ИНИ файле картинки!!!!!!!
5) Не хранил бы в ИНИ файле картинки!!!!!!!
6) Не хранил бы в ИНИ файле картинки!!!!!!!
7) Не хранил бы в ИНИ файле картинки!!!!!!!
8) Не хранил бы в ИНИ файле картинки!!!!!!!
9) Не хранил бы в ИНИ файле картинки!!!!!!!
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2015, 13:11   #3
tatosha
 
Регистрация: 19.10.2014
Сообщений: 9
По умолчанию

Цитата:
Не хранил бы в ИНИ файле картинки!!!!!!!,
а где их хранить посоветуете?

Последний раз редактировалось Stilet; 01.06.2015 в 14:01.
tatosha вне форума Ответить с цитированием
Старый 01.06.2015, 13:33   #4
SQLPowerUser
Форумчанин
 
Аватар для SQLPowerUser
 
Регистрация: 19.01.2015
Сообщений: 158
Вопрос А общая задача какая?

Можно хранить в .ini двоичные данные, но в формате строки Base64.
Фрагмент из работающего шаблона
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  fs: TFileStream;
  sStream: TStringStream;
begin
  if not OpenDialog1.Execute then Exit;

  fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  sStream := TStringStream.Create('');
  try
    fs.Position := 0;
    sStream.CopyFrom(fs,fs.Size);
    sStream.Position := 0;
    Memo1.Text := EncodeString(sStream.DataString);
  finally
    sStream.Free;
    fs.Free;
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  Ss: TStringStream;
begin
  if not OpenDialog1.Execute then exit;

  Image1.Picture.LoadFromFile(OpenDialog1.FileName);
  Ss := TStringStream.Create('');
  try
    Image1.Picture.Bitmap.SaveToStream(Ss);
    Ss.Position := 0;
    Memo1.Text := EncodeString(Ss.ReadString(Ss.Size));
  finally
    FreeAndNil(Ss);
  end;
end;


procedure TForm1.Button3Click(Sender: TObject);
var
  Ss : TStringStream;
begin
  Ss := TStringStream.Create(DecodeString(Memo1.Text));
  try
    Image2.Picture.Bitmap.LoadFromStream(Ss);
  finally
    FreeAndNil(Ss);
  end;
end;

Последний раз редактировалось SQLPowerUser; 01.06.2015 в 13:35.
SQLPowerUser вне форума Ответить с цитированием
Старый 01.06.2015, 14:01   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
где их хранить посоветуете?
В отдельном каталоге. А в ИНИ относительный путь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TBitMap / TJpegImage в потоках Puhovoi Общие вопросы Delphi 8 10.03.2013 16:49
Проблема с TJPEGImage ssman Мультимедиа в Delphi 2 29.05.2012 18:31
Ошибка конвертации TJPegImage to a TJpegImage Lokos Общие вопросы Delphi 8 20.10.2010 11:00
TMemorystream -> TJPEGimage ( используя сеть ) Lime Работа с сетью в Delphi 2 17.02.2009 03:14