Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.11.19;
Скачать: CL | DM;

Вниз

Запись/чтение Bitmap+текстовое описание в файл   Найти похожие ветки 

 
Валя   (2015-12-04 21:31) [0]

Нужно реализовать файл специфического формата:
секция1: картинка bmp;
секция2: текстовое описание;
секция3: маленькая иконка для кнопки, по клику которой и будет открывать bitmap с описанием.

Подскажите как ето все реализовать с одним файлом


 
vegarulez   (2015-12-04 22:03) [1]

Tpanel+Timage+Tmemo


 
Rouse_ ©   (2015-12-04 22:39) [2]

Записать в файл в указанном порядке и прочитать, в чем проблема то?


 
Валя   (2015-12-04 22:49) [3]

пока не пойму как из такого файла загружать и обратно записывать битмап


 
Игорь Шевченко ©   (2015-12-04 22:55) [4]

Use TFileStream, Luke!


 
Юрий Зотов ©   (2015-12-05 00:38) [5]

> Валя   (04.12.15 21:31)

1. 4 байта - объем X картинки в байтах
2. X байт - картинка
3. 4 байта - длина Y текста в байтах
4. Y байт - текст
5. 4 байта - объем Z иконки в байтах
6. Z байт - иконка


 
Валя   (2015-12-05 10:04) [6]


> Юрий Зотов ©   (05.12.15 00:38) [5]

Спасибо по крайней мере идея понятна.

Скажем есть картинка загруженная в  TImage, нужно же до записи знать сколько она байт. Как это можно получить до записи.


 
Игорь Шевченко ©   (2015-12-05 10:44) [7]


> Как это можно получить до записи.


Use TFileStream, Luke!


 
Валя   (2015-12-05 11:47) [8]

Не читается картинка в Image3, как ее правильно вытягивать из MemoryStream

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, ImgList;

type
 TForm1 = class(TForm)
   Image1: TImage;
   Button1: TButton;
   Image2: TImage;
   Image3: TImage;
   Image4: TImage;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function GetGraphicSize(g: TGraphic): Integer;
var
 ms: TStream;
begin
 ms := TMemoryStream.Create;
 try
   g.SaveToStream(ms);
   Result := ms.Size;
 finally
   ms.Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 f: TFileStream;
 size1, size2: Integer;
begin
 f := TFileStream.Create("1.dat", fmCreate);
 size1 := GetGraphicSize(Image1.Picture.Graphic);
 size2 := GetGraphicSize(Image2.Picture.Graphic);
 f.Write(size1,4);
 f.Write(size2,4);

 Image1.Picture.Bitmap.SaveToStream(f);
 Image2.Picture.Bitmap.SaveToStream(f);
 
 f.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 ms: TStream;
 f: TFileStream;
 size1, size2: Integer;
begin
 f := TFileStream.Create("1.dat", fmOpenRead);
 f.Seek(0, soFromBeginning);
 f.Read(size1,4);
 f.Seek(4, soFromBeginning);
 f.Read(size2,4);
 f.Seek(4+4+size1, soFromBeginning);

 ms := TMemoryStream.Create;
 ms.Seek(0, soFromBeginning);
 ms.CopyFrom(f, size2);

 Image3.Picture.Bitmap.LoadFromStream(ms); {ничего не грузится}

 f.Free;
 ms.Free;
end;

end.


 
aka ©   (2015-12-05 12:37) [9]

ms.Position := 0;
 Image3.Picture.Bitmap.LoadFromStream(ms);


 
Лори   (2015-12-25 03:02) [10]

> Use TFileStream, Luke!

ам... Имелось ввиду TFileStream.WriteComponent() ? Оно и картинку сожрёт? %)



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

Текущий архив: 2017.11.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.004 c
15-1467815349
KSergey
2016-07-06 17:29
2017.11.19
set of TEnum в Си


2-1450907758
Black
2015-12-24 00:55
2017.11.19
динамический Lookup список для TComboBoxEx


2-1450113022
gedevan
2015-12-14 20:10
2017.11.19
Можно ли подключиться к базе Access через TStream?


15-1467649943
Копир
2016-07-04 19:32
2017.11.19
И не скучно Вам?


15-1467813185
Unbekannt
2016-07-06 16:53
2017.11.19
Проблема с печатью этикеток на разных принтерах