[ anon68680 @ 26.06.2008. 14:07 ] @
Pokusavam da nadjem kod koji ce prebacivati GIF u TIF format bez ikakve kompresije... Ako neko mozda ima gotov kod ili mozda ima ideju kako bih ovo mogao da uradim neka mi javi googlao sam bez ikakvih rezultata a jos slabo baratam ovim stvarima..
[ anon68680 @ 27.06.2008. 14:40 ] @
Ping? Pong!

Niko ne zna? Ne mora bas iz gifa.. Mozda bih mogao da prebacim gif u jpg pa onda u tif ili slicno tome...
[ Milan Milosevic @ 28.06.2008. 17:37 ] @
Potrazi na netu GraphicEx komponente.
Besplatne su i dozvoljavaju konverziju izmedu mnogih grafickih formata.
[ nikomak @ 29.06.2008. 14:24 ] @
Slazem se da su GrapihcEx odlicne komponente, ali ja bih predlozio GDI+ iz razloga zato sto je to veoma thin layer, a poseduje dosta mogucnosti. Pascal GDI+ API se moze naci ovde http://www.progdigy.com/files/gdiplus.zip

Posto je zahtevana konverzija iz gif formata u tiff, predpostavljam da se zeli sacuvati svaki frame gif slike u tiff multiframe, inace
je kod konverzije dosta jednostavniji :)

Code:

...
uses ... GDIPAPI, GDIPOBJ, GDIPUTIL;
..
procedure Gif2Tiff(GifImgPath, TiffImgPath: String);
var Img, TiffImg: TGPImage;
 encoderClsid: TGUID;
 encoderParameters: TEncoderParameters;
 encoderVal: TEncoderValue;
 status: TStatus;
 frameCount: Integer;
 dimensionId: TGUID;
 I: Integer;
begin
//
 Img := TGPImage.Create(GifImgPath);
 try
 if GetEncoderClsid('image/tiff', encoderClsid) < 0 then
  begin
   ShowMessage('tiff encoder nije instaliran!');
   Exit;
  end;
 TiffImg := TGPImage.Create(GifImgPath);
 Img.GetFrameDimensionsList(@dimensionId,1);
 frameCount := Img.GetFrameCount(dimensionId);

 encoderParameters.Count := 1;
 encoderParameters.Parameter[0].Guid := EncoderSaveFlag;
 encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong;
 encoderParameters.Parameter[0].NumberOfValues := 1;
 encoderVal := EncoderValueMultiFrame;
 encoderParameters.Parameter[0].Value := @encoderVal;

 status := TiffImg.Save(TiffImgPath,encoderClsid, @encoderParameters);
 if status <> GDIPAPI.Ok then
    ShowMessage( Format('Greska: %s',[GetStatus(status)]) )
 else
 begin
  //od 1 zato sto je prvi frame vec save-ovan
  for I := 1 to frameCount - 1 do
   begin
     encoderVal := EncoderValueFrameDimensionPage;

     status := Img.SelectActiveFrame(dimensionId,I);
     if status <> GDIPAPI.Ok then
     begin
      ShowMessage( Format('Greska: %s',[GetStatus(status)]) );
      Exit;
     end;

     status := TiffImg.SaveAdd(Img, @encoderParameters);
     if status <> GDIPAPI.Ok then
     begin
      ShowMessage( Format('Greska: %s',[GetStatus(status)]) );
      Exit;
     end;
   end;

   encoderVal := EncoderValueFlush;
   TiffImg.SaveAdd(@encoderParameters);
   if status <> GDIPAPI.Ok then
    begin
     ShowMessage( Format('Greska: %s',[GetStatus(status)]) );
     Exit;
    end;

  ShowMessage('Konverzija ooook ! :)');
 end;
 finally
   FreeAndNil(Img);
   FreeAndNil(TiffImg);
 end;

end;


[Ovu poruku je menjao nikomak dana 29.06.2008. u 16:40 GMT+1]