AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia GDI + tif - MultiPage - Bild wird dunkler
Thema durchsuchen
Ansicht
Themen-Optionen

GDI + tif - MultiPage - Bild wird dunkler

Ein Thema von bernhard_LA · begonnen am 6. Jul 2012 · letzter Beitrag vom 20. Jul 2012
Antwort Antwort
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 9. Jul 2012, 12:35
PNG:
mit PixelFormat8bppIndexed
dest.Save( WideString(NewFilename), encoderClsid, nil );

kommt es bei mir wie erwartet mit 8-Bit

wenn ich einen Encoder 'image/bmp'
geht PixelFormat16bppRGB565 , bei PNG nicht (wird 32-bit)

Ich bin nicht der Experte was die Formate angeht ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.153 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 10. Jul 2012, 08:25
@Bummi : * Unterscheidet sich Dein Code von meiner Routine ?
kann leider die Tif Datei nicht Public machen

* Was wäre denn der beste Weg das ganze als TBitmap zu speichern
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 10. Jul 2012, 10:01
Bei mir sind die encoderParameters nil ...,da ich als PNG bzw. BMP ausgebe
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.153 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 19. Jul 2012, 18:43
Hallo Zusammen,

vielen Dank für die echt guten Hinweise in den ganzen Threads zum Thema TIF , GDI+, Array[0..0]. Leider läuft mein Programm mit meinen Tif Bildern immer noch nicht.
Ich habe meine Aufgabe über einen Umweg (Handarbeit) gelöst, das Demo Projekt zum Thema "Tif Splitter" habe ich unter https://sourceforge.net/projects/tiffsplitdemo/ veröffentlich, vielleicht hilft es anderen oder jemand sieht noch das Problem..

Grüße

B.
  Mit Zitat antworten Zitat
Gernot Huber

Registriert seit: 26. Mai 2011
Ort: Dülmen
13 Beiträge
 
Delphi 2010 Professional
 
#5

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 20. Jul 2012, 12:08
Hallo,

versuch es mal hiermit:

Delphi-Quellcode:
procedure ExtractTiffPages(aFileName: string);
var
  encoderParameters : TEncoderParameters;
  parameterValue : TEncoderValue;

  image : TGPImage;
  count, frameCount : UINT;
  DimensionIDs : PGUID;
  i, j : integer;
  encoderClsid : TGUID;
  OutFile : string;
  FilePath : string;

type
  TGUIDDynArray = array of TGUID;

begin
  FilePath := ExtractFilePath(aFileName);

  Image := TGPImage.Create(aFileName);

  // Initialize the one EncoderParameter object.
  encoderParameters.Count := 1;
  encoderParameters.Parameter[0].Guid := EncoderCompression;
  encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong;
  encoderParameters.Parameter[0].NumberOfValues := 1;
  encoderParameters.Parameter[0].Value := @parameterValue;
  parameterValue := EncoderValueCompressionLZW;

  // How many frame dimensions does the Image object have?
  count := image.GetFrameDimensionsCount;
  GetMem(DimensionIDs, count * SizeOf(TGUID));

  // Get the list of frame dimensions from the Image object.
  image.GetFrameDimensionsList(DimensionIDs, count);

  GetEncoderClsid('image/tiff', encoderClsid);

  for i := 0 to count - 1 do
  begin
    // Get the number of frames in dimension.
    frameCount := image.GetFrameCount(TGUIDDynArray(DimensionIDs)[i]);
    for j := 0 to frameCount - 1 do
    begin
      OutFile := FilePath + IntToStr(i) + '-' + IntToStr(j) + '.tif';

      image.SelectActiveFrame(TGUIDDynArray(DimensionIDs)[i], j);
      image.Save(OutFile, encoderClsid, @encoderParameters);
    end;
  end;

  freemem(DimensionIDs);
  image.Free;
end;
Hierbei sollten die Farben erhalten beleiben.

Gruß
Gernot
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz