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
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 6. Jul 2012, 19:57
Unterstützt TIF Gamma-Korrektur? Falls ja, könnte es damit zusammenhängen. Bei PNGs kenne ich solche Probleme...
  Mit Zitat antworten Zitat
bernhard_LA

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

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 6. Jul 2012, 21:03
bin auf der suche nach zwei Anweisung von diesem Typ :

Delphi-Quellcode:
    

  encoderParameters.Count := 1;
  encoderParameters.Parameter[0].Guid := EncoderCompression;
  encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong;
  encoderParameters.Parameter[0].NumberOfValues := 1;
  encoderParameters.Parameter[0].Value := @CompressionValue;


  encoderParameters.Count := 2;
  encoderParameters.Parameter[1].Guid := EncoderColorDepth;
  encoderParameters.Parameter[1].Type_ := EncoderParameterValueTypeLong;
  encoderParameters.Parameter[1].NumberOfValues := 1;
  encoderParameters.Parameter[1].Value := @ColorDepthValue;

  ColorDepthValue := PixelFormat16bppGrayScale;
a) compression auf none zu setzen
http://www.universalthread.com/ViewP...le.aspx?ID=864


b) Farbtiefe auf 256 bit

Geändert von bernhard_LA ( 6. Jul 2012 um 22:20 Uhr)
  Mit Zitat antworten Zitat
bernhard_LA

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

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 8. Jul 2012, 15:53
@bummi : leider ist der Ansatz mit *.png nicht erfolgreich ; Mein Rechner
ändert das Kompressionsformat und das Farbformat
PixelFormat16bppRGB565 hat auf meinem PC anscheinend keine Bedeutung
Angehängte Grafiken
Dateityp: jpg gdiplus_errors.jpg (91,2 KB, 12x aufgerufen)
  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
 
#4

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 8. Jul 2012, 18:23
hast Du mal geschaut, da sind noch diverse andere Pixelformate definiert...
Im Zweifelsfalls kannst Du auch mal für die Ausgabe ein ordinäres TBitmap erzeugen, Pixelfomat und Größe festlegen und auf dessen Canvas malen.
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.141 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 9. Jul 2012, 12:08
ich denke mein Problem besteht darin :

egal mit welchen Parametern ich die Tiff oder png Datei ertselle,
dieser Mistkerl (mein PC) verwendet immer seine default Werte
(dabei setzt er die Kompression auf LWZ, setzt die DPI Werte und ändert das Farb-Schema)

Dieser Code hat bei Mir halt keine Wirkung :
dest.Save(WideString(NewFilename), encoderClsid, @encoderParameters);


Delphi-Quellcode:


procedure TGDIPMainForm.btn_splitt_tif_fileClick(Sender: TObject);
var
  encoderClsid: TGUID;
  encoderParameters: TEncoderParameters;
  // parameterValue: TEncoderValue;


  CompressionValue: ULONG;
  ColorDepthValue: ULONG;
  quality: ULONG;

  stat: TStatus;
  MulitFrameImage: TGPImage;
  PageIndex: integer;
  PageCount: integer;
  NewFilename: String;
  dest: TGPBitmap;
  g: TGPGraphics;

begin

  stat_main.SimpleText := ' processing ' + edt_imagefilename.Text;

  RootFolder := edt_outFolder.Text;

  /// Get an tif image from the disk.
  MulitFrameImage := TGPImage.Create(edt_imagefilename.Text);

  /// Get the CLSID of the JPEG, TIFF ... encoder.
  GetEncoderClsid('image/png', encoderClsid);

  /// Before we call Image::Save, we must initialize an
  /// EncoderParameters object. The EncoderParameters object
  /// has an array of EncoderParameter objects. In this
  /// case, there is only one EncoderParameter object in the array.
  /// The one EncoderParameter object has an array of values.
  /// In this case, there is only one value (of type ULONG)
  /// in the array. We will let this value vary from 0 to 100




  // encoderParameters.Count := 2;
  // encoderParameters.Parameter[1].Guid := EncoderCompression;
  // encoderParameters.Parameter[1].Type_ := EncoderParameterValueTypeLong;
  // encoderParameters.Parameter[1].NumberOfValues := 2;
  // encoderParameters.Parameter[1].Value := @CompressionValue;


  // encoderParameters.Count := 1;
  // encoderParameters.Parameter[0].Guid := EncoderColorDepth;
  // encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong;
  // encoderParameters.Parameter[0].NumberOfValues := 1;
  // encoderParameters.Parameter[0].Value := @ColorDepthValue;

  // ColorDepthValue := PixelFormat16bppGrayScale;
  // ColorDepthValue := PixelFormat16bppRGB565
  // CompressionValue := CompressionNone;

  // Save the image as ... a with quality level 0...100
  encoderParameters.Count := 1;
  encoderParameters.Parameter[0].Guid := EncoderQuality;
  encoderParameters.Parameter[0].Type_ := EncoderParameterValueTypeLong;
  encoderParameters.Parameter[0].NumberOfValues := 1;
  encoderParameters.Parameter[0].Value := @quality;
  quality := 100;

  PageCount := GetFrameCount(MulitFrameImage);

  ProgressBarPage.Min := 0;
  ProgressBarPage.Max := PageCount;

  for PageIndex := 0 to PageCount do
  begin

    ProgressBarPage.StepBy(1);

    PageFolder := 'page' + IntToStr(PageIndex) + '\';

    ThisFolder := RootFolder + PageFolder;

    CreateFolderOnDemand(ThisFolder);

    /// Display and save the page (index 0 ... MAX ).
    MulitFrameImage.SelectActiveFrame(encoderClsid, PageIndex);

    /// ------------------- VErsion TIFF ---------------------------------
    NewFilename := ThisFolder + IntToStr(PageIndex) + '__' +
      ExtractFileName(edt_imagefilename.Text);

// stat := MulitFrameImage.Save(WideString(NewFilename), encoderClsid,
// @encoderParameters);

    /// ------------------- Version png BUMMI ---------------------------------

    NewFilename := ChangeFileExt(NewFilename, '.png');
    dest := TGPBitmap.Create(MulitFrameImage.GetWidth,
      MulitFrameImage.GetHeight, PixelFormat16bppRGB565);
    g := TGPGraphics.Create(dest);
    g.DrawImage(MulitFrameImage, MakePoint(0, 0));
    dest.Save(WideString(NewFilename), encoderClsid, @encoderParameters);
    g.Free;
    dest.Free;

    if (stat = Ok) then
      stat_main.SimpleText := 'saved successfully (png).'
    else
      stat_main.SimpleText := ' Attempt to save failed.';

    Application.ProcessMessages;

  end;

  MulitFrameImage.Free;

end;
  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
 
#6

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.141 Beiträge
 
Delphi 11 Alexandria
 
#7

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 himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#8

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 7. Jul 2012, 04:02
Unterstützt TIF Gamma-Korrektur?
TIFF selber kennt erstmal nicht viel, denn es ist nur ein Containerformat und als Bildformat kann sehr viel darin enthalten sein, wie z.B. JPEG oder Bitmap.
Selber speicher ich in unseren TIFFs die Bilder als LZW-komprimiertes Bitmap, also so ähnlich wie auch beim PNG.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
bernhard_LA

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

AW: GDI + tif - MultiPage - Bild wird dunkler

  Alt 7. Jul 2012, 07:18
ich hoffe mit http://www.delphipraxis.net/1173859-post10.html kann ich den Fehler umgehen,
ich muss halt nur zwei oder mehr Parameter vor dem Speichern setzen

Am allerbesten wäre es wenn ich alle Parameter auslesen und dann vor dem Speichern übergeben könnte
  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 08:30 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