![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как сохранить информацию из 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