Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как сохранить информацию из jpg о дате,и фото апарате ? [D5, D6]


Evgenij ©   (2002-05-29 14:14:00) 

Загружаю JPG файл в TImage. Преобразую его в bitmap, накладываю текст, потом преобразую назад в JPG и сохраняю в файл. Приэтом теряется информация (из jpg о дате,и фото апарате)Знает ли кто-нибудь как эту информацию можно сохранить?


Игорь Шевченко   (2002-05-30 12:58:00) [1]

procedure TForm1.FormCreate(Sender: TObject);
var
Data : array[0..255] of char;
fd : Integer;
DateString : String;
begin
fd := FileOpen("101-0171_IMG.JPG", fmOpenRead);
if fd <> -1 then begin
FileRead(fd, Data, 255);
DateString := StrPas(@Data[188]);
ShowMessage("Date is "+DateString);
end;
end;

С уважением,


Evgenij   (2002-05-30 09:44:00) [2]

спасибо у меня есть такие. как и что делать?


Evgeny   (2002-05-30 07:24:00) [3]

У JPEG формата имеются специальные маркеры, определяющие различные параметры. В частности маркер $FF $FE определяет, что далее идет комментарий. А вот группа маркеров $FF $F0...$FF $FD зарезервированы для расширения формата. Возможно в них и содержится нужная информация. Для уточнения нужно видеть "живые" файлы.


Song   (2002-05-29 23:58:00) [4]

Тогда бери дату и время создания файла и выводи их на его Canvas.


Evgenij   (2002-05-29 18:01:00) [5]

acdsee 4 и выше пономают такие jpg


Evgenij   (2002-05-29 17:55:00) [6]

да дата и время фотографирования
у меня есть фотки
могу прислать


Song   (2002-05-29 17:52:00) [7]

Наверно дата и время снимка - дата и время создания файла? Или файл создаётся при перемещении снимка с цифровика в комп?


Evgenij   (2002-05-29 17:51:00) [8]

нет потому что незнаюкак достать
я знаю что там есть а как достать не получается :(


Song   (2002-05-29 17:40:00) [9]

Ну и хрен с ним, пускай уменьшается. Раз перемены в качестве нет, зачем? А Вы разве использовали как-то эту информацию в своём отрывке?


Evgenij   (2002-05-29 17:32:00) [10]

перед тем как сдавать на изготовление фоток


procedure TImageOpen.Button5Click(Sender: TObject);
Var Bmp: TBItmap;
Jpg:TJpegImage;
Img,StringOut:String;
i:Integer;
begin

Button1.Enabled := False;
Button2.Enabled := False;
Button3.Enabled := False;
Button5.Enabled := False;

for i:=0 to ListBox1.Items.Count-1 do
begin
Application.ProcessMessages;
Label1.Caption := "Done "+IntToStr(i+1)+" of "+IntToStr(ListBox1.Items.count);
ListBox1.ItemIndex := i;
Img:= ListBox1.Items[i];
StringOut := copy(Img,(Length(Img)-22),19);(как из картинки извлеч)

Jpg:=TJpegImage.Create;

With Jpg Do
try
LoadFromFile(Img);
Bmp:= TBitMap.Create;
With Bmp Do
Begin
Width:=Jpg.Width;
Height:=Jpg.Height;
Assign(Jpg);
Canvas.Brush.Color := clBlack;
Canvas.Font.Size := 24;
Canvas.Font.Color := clWhite;
With Canvas Do TextOut((Width)-TextWidth(StringOut),Height-TextHeight(StringOut),StringOut);
End;
Assign(Bmp);
SaveToFile(ChangeFileext(Img, "_Time.jpeg" ));
finally
Bmp.Free;
Free;
end;
end;
ListBox1.Items.Clear;
Button1.Enabled := True;
Button2.Enabled := True;
Button3.Enabled := True;
Button5.Enabled := True;
end;


Evgenij   (2002-05-29 17:22:00) [11]

всё супер но это не то
после этих действий из jpg удаляется информация и фаил уменьшается минимум на 25% в самом файле есть дата вот хотелось бы научится извлекать её и затем использовать для вставки в фотографию


Song   (2002-05-29 16:52:00) [12]


procedure TForm1.Button1Click(Sender: TObject);
Const StringOut="String";
Var Mmp: TBItmap;
Jpg:TJpegImage;
begin
Jpg:=TJpegImage.Create;
With Jpg Do
try
LoadFromFile("C:\12.jpg");
Bmp:= TBitMap.Create;
With Bmp Do
Begin
Width:=Jpg.Width;
Height:=Jpg.Height;
Assign(Jpg);
Canvas.Font.Size := 18;
With Canvas Do TextOut((Width div 2)-TextWidth(StringOut),Height-TextHeight(StringOut),StringOut);
End;
Assign(Bmp);
SaveToFile("c:\121.jpg");
finally
Bmp.Free;
Free;
end;
end;


Evgenij   (2002-05-29 15:46:00) [13]

я делаю так

bmp: TBItmap; jpg: TJpegImage;
begin
OpenDialog1.Execute;
jpg:= TJpegImage.Create;
jpg.LoadFromFile( OpenDialog1.FileName );
bmp:= Tbitmap.Create;
bmp.Width := jpg.Width;
bmp.Height:= jpg.Height;
bmp.Canvas.StretchDraw( bmp.Canvas.Cliprect, jpg );
bmp.Canvas.Font.Size := 18;
bmp.Canvas.TextOut(bmp.Width - (bmp.Canvas.Font.Size * 18 div 5),bmp.Height -(bmp.Canvas.Font.Size * 3 div 2),"дата");
{Convert back to JPEG and save to file}
jpg.Assign( bmp );
jpg.Compress;
jpg.CompressionQuality := 100;
jpg.SaveToFile(ChangeFileext( OpenDialog1.FileName, "_Time.JPG" ));
bmp.free;
jpg.free;

а вообще то надо для чего:
фотоапарат делает jpg и в него прописивает все настройки при которых он работал в том числе и дату вот мне и хочется в угол нижний картинки записать дату(правда я незнаю как её извлечь из jpg)


Song   (2002-05-29 14:23:00) [14]

А как обратно преобразуете? Надо не BitMap преобразовывать уже а его Canvas


Наверх

Титульная страница Поиск, карта сайта Написать письмо