ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 IPTC information in tiff-files

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

View 
UserName:
Password:
Format  Bold Italicized Underline  Align Left Centered Align Right  Horizontal Rule  Insert Hyperlink   Browse for an image to attach to your post Browse for a zip to attach to your post Insert Code  Insert Quote Insert List
   
Message 

 

Emoji
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Black Eye [B)]
Frown [:(] Shocked [:0] Angry [:(!] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
arkipix Posted - May 03 2012 : 01:37:20
ImageEnIO1.Params.TIFF_DocumentName:='ArkiPix';
ImageEnIO1.Params.TIFF_ImageDescription:= RichEdit1.Text;
ImageEnIO1.SaveToFile(imagename);

This do not work. No information in the image.
Why?
Works fine in PhotoShop.
Regards
Peter
15   L A T E S T    R E P L I E S    (Newest First)
arkipix Posted - May 23 2012 : 04:00:47
Hi Fabrizio
Sorry for my bad explanations.
Now it all works fine.
I ended up with this:
for Z := 0 to ImageEnMView1.MultiSelectedImagesCount - 1 do
begin
ImageEnIO1.ParamsFromFile(ImageEnMView1.ImageFileName[ImageEnMView1.MultiSelectedImages[Z]]);
Case ImageEnIO1.Params.FileType of
ioJpeg:
begin //Hvis jpeg
with ImageEnMView1.MIO.Params[ImageEnMView1.MultiSelectedImages[Z]] do
Begin
idx := IPTC_Info.IndexOf(2, 120);
If idx > -1 then IPTC_Info.StringItem[idx] := ''; //
end;
If ImageEnIO1.InjectJpegIPTC(ImageEnMView1.ImageFileName[ImageEnMView1.MultiSelectedImages[Z]])= False then
fejl(38); //
end;
ioTiff:
Begin //Hvis TIFF
ie := TImageEnView.Create(nil);
billednavn := ImageEnMView1.ImageFileName[ImageEnMView1.MultiSelectedImages[Z]];
ie.IO.LoadFromFile(billednavn);
idx := ImageEnMView1.MIO.Params[ImageEnMView1.MultiSelectedImages[Z]].IPTC_Info.IndexOf(2, 120);
ie.IO.Params.IPTC_Info.StringItem[idx] := '';
ie.IO.SaveToFile(billednavn);
ie.Free();
End;
end; //case
end;

Thankyou
Regards
Peter
fab Posted - May 23 2012 : 01:03:19
ImageEnIO1 is connected to?

Anyway if TImageEnMView contains full images (not thumbnails) you can write:
// note: I removed ioJPEG code, because it works, just to make code more clear
for I := 0 to ImageEnMView1.MultiSelectedImagesCount - 1 do
begin
  with ImageEnMView1.MIO.Params[ ImageEnMView1.MultiSelectedImages[I] ] do
  begin
    idx := IPTC_Info.IndexOf(2, 120);
    If idx > -1 then
       IPTC_Info.StringItem[idx] := '....';
  end;
  with ImageEnMView1 do
    GetImageToFile(MultiSelectedImages[I], ImageFileName[MultiSelectedImages[I]]);
end;


Another way:
var ie: TImageEnView;
...
ie := TImageEnView.Create(nil);
for i:=0 to ImageEnMView1.MultiSelectedImagesCount-1 do
begin
  filename := ImageEnMView1.ImageFileName[ ImageEnMView1.MultiSelectedImages[I] ];
  ie.IO.LoadFromFile(filename);
  ie.IO.Params.IPTC.... do something with IPTC...
  ie.IO.SaveToFile(filename);
end;
ie.Free();

Otherwise, if ImageEnIO1 is connected to TImageEnMView, then it points to currently selected image. This is because you get always the same image.

arkipix Posted - May 23 2012 : 00:45:34
Sorry
this is the line:
ioTIFF: ImageEnIO1.SaveToFileTIFF(ImageEnMView1.ImageFileName[ImageEnMView1.MultiSelectedImages[I]]); // ;
Gives all the images the same motive.
Regarsd
Peter
arkipix Posted - May 23 2012 : 00:39:56
Hi again
I do not understand.
What is wrong with this (erasing captions)
procedure TMain.SletBtnClick(Sender: TObject);
Var I, idx: Integer;
begin //
If ImageEnMView1.MultiSelectedImagesCount > 1 then
Begin
Fortrydsletning1.Enabled := False;//Undo
Fortrydsletning2.Enabled := False;
CapFrm.UndoBtn.Enabled := False;
for I := 0 to ImageEnMView1.MultiSelectedImagesCount - 1 do
begin
ImageEnIO1.ParamsFromFile(ImageEnMView1.ImageFileName[ImageEnMView1.MultiSelectedImages[I]]);
idx := ImageEnIO1.params.IPTC_Info.IndexOf(2, 120);
If idx > -1 then
Begin //
ImageEnIO1.params.IPTC_Info.StringItem[idx] := ''; //
case ImageEnIO1.Params.FileType of
ioJPEG: If ImageEnIO1.InjectJpegIPTC(ImageEnMView1.ImageFileName[ImageEnMView1.MultiSelectedImages[I]])= False then
fejl(38); //
ioTIFF: if ImageEnIO1.SaveToFileTIFF(ImageEnMView1.ImageFileName[ImageEnMView1.MultiSelectedImages[I]]) = False then
fejl(38); //error ;
end; //case
end;
end;
end
end;
I erase the caption, but the images with the same motive.
Regards
Peter
fab Posted - May 16 2012 : 06:07:20
Hi,
IPTC sample works ok, even loading and saving different images and storing the same IPTC info.
arkipix Posted - May 16 2012 : 03:52:36
Hi
When I use your sample program iptc.dpr with the small change, that it repeat inserting iptc information in two or three images. IPTC is inserted, but on reload the images are all showing the same picture.
Why?
What I need is a kind of InjectTiffIPTC or some reset efter each image.
Am I doing it wrong?
Regards
Peter
arkipix Posted - May 14 2012 : 03:52:16
Hi again.
My program is an archiving program.
Thumbs are shown in ImageEnMView1.
You mark them ( one or more) write the keyword (IPTC-caption) and save it in the image.
A database is updated and you can find the wanted image in fractions of a second.
It has always been jpegs, but I want to use it on tiff images too. It is no problem inserting keywords in IPTC-caption with PhotoShop and imageen can read from these tiff images (and from the XMP too).
As i see it now it is not so easy as I thought with ImageEn.
Should it be easy I am very interested.
Regards
Peter
fab Posted - May 14 2012 : 02:56:35
Hi,
you never told about a TImageEnMView...
I suppose you want to extract each image in TImageEnMView to an external file, right?
In this case you could just execute GetImageToFile:

ImageEnMView1.MIO.Params[imageIndex].IPTC_Info.AddStringItem(2,120,RichEdit1.Text) ;
ImageEnMView1.GetImageToFile(imageIndex, 'out,jpg');
arkipix Posted - May 14 2012 : 02:49:11
Hi
They are not used because they did not make any difference.
If I select only one image and save it, is OK with the next image.
All works fine with jpegs.

Procedure is:

for I := 0 to ImageEnMView1.MultiSelectedImagesCount - 1 do
begin
selected := ImageEnMView1.MultiSelectedImages[I];
BilledNavn := ImageEnMView1.ImageFileName[selected];
GemBtnClick(Sender);<-Call to the next procedure that saves the caption.
end;

If (Uppercase(ExtractFileExt(BilledNavn)) = '.JPG') or (Uppercase(ExtractFileExt(BilledNavn)) = '.JPEG') then
Begin
.................
End
else if (Uppercase(ExtractFileExt(BilledNavn)) = '.TIF') or (Uppercase(ExtractFileExt(BilledNavn)) = '.TIFF') then

Regards
Peter
fab Posted - May 14 2012 : 01:56:27
I don't see, in your code, how you load the image (both LoadFromFileTIFF and ParamsFromFile are commented out). If you want to reset I/O parameters you have to ways:
1) call ParamsFromFile or LoadFromFile...
2) call ImageEnIO1.Params.SetDefaultParams()
arkipix Posted - May 14 2012 : 01:41:30
Sorry Fabizio.
What is wrong?
When I put caption in more than one image it copies all image information and the first image to all marked images. Then they are all alike!!
Caption is written OK.
if (Uppercase(ExtractFileExt(BilledNavn)) = '.TIF') or (Uppercase(ExtractFileExt(BilledNavn)) = '.TIFF') then
begin
// ImageEnIO1.LoadFromFileTIFF(Billednavn);
//ImageEnIO1.ParamsFromFile(BilledNavn);
ImageEnIO1.Params.IPTC_Info.AddStringItem(2,120,RichEdit1.Text) ;
ImageEnIO1.SaveToFile(Billednavn);
end else fejl(44);(This code is repeated for each image)
Regards
Peter
arkipix Posted - May 06 2012 : 05:33:09
Sorry Fabrizio
It works fine now.
I don't know what PhotoShop does, but this is what i wanted.
Thanks
Peter
fab Posted - May 06 2012 : 05:13:24
Hi Peter,
what I don't understand is why you set TIFF parameters and read IPTC tags?
You should set IPTC parameters using Params.IPTC_Info.AddStringItem().
arkipix Posted - May 06 2012 : 04:54:29
Hi Fabrizio
I test like this:
if (Uppercase(ExtractFileExt(BilledNavn)) = '.TIF') or (Uppercase(ExtractFileExt(BilledNavn)) = '.TIFF') then

I read like this (from PhotoShop too)
ImageEnIO1.ParamsFromFile(Billednavn);
for i:=0 to high(iptc) do
Begin
with ImageEnIO1.Params.IPTC_Info do
StringGrid1.Cells[1,i+1]:= StringItem[ IndexOf(iptc [i].r,iptc[i].d) ];
if I=2 then StringGrid1.Cells[1,i+1] := KeyDybere;
End;


10.53 KB
I hope this explains my problem
Regards
Peter
fab Posted - May 03 2012 : 03:39:05
Please add details:
1) has the "imagename" TIFF extension?
2) how do you test if the information is inside the file?