| Autor |
Beitrag |
stiftmaster
      
Beiträge: 149
|
Verfasst: Fr 17.03.06 09:54
Hallo Leute,
ich verwende Photo-Shop zum Erstellen von PNG-Dateien. Wenn ich diese Dateien im InternetExplorer darstellen will, sind diese immer etwas dunkler als gewünscht. Erst dachte ich, es wäre ein IE-Bug, doch dann habe ich den Tipp bekommen, dass man die PNG-Datei durch Gimp jagen soll (einmal öffnen, dann wieder speichern). Und tatsächlich - die Grafik wird nun korrekt im IE angezeigt (in allen anderen Browsern auch).
Habe jetzt rund 10 Grafiken schon durch Gimp gejagt und langsam nervt es. Will mir jetzt ein Programm schreiben, was mir die gesamte Arbeit abnimmt (ohne Gimp als eigenständiges Programm). Habe geschaut, welche Möglichkeiten es gibt, in Delphi PNG-Dateien zu laden. Bin hier auf TPNGImage gestoßen und damit kann ich auch wunderbar PNG-Dateie laden:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var Picture: TPNGObject; begin Picture := TPNGObject.Create; Picture.LoadFromFile('D:\Test.png'); Picture.LoadFromFile('D:\Test.bmp'); Picture.SaveToFile('D:\Test2.png'); Picture.Free; end; |
Binde ich die neue Datei wieder in die Seite ein, besteht der Fehler weiterhin. Hat jemand n' Ahnung oder n' Idee, was ich noch machen muss, damit auch dieser dumme IE die PNG-Dateie richtig darstellt. Bin für jeden Tipp dankbar.
Stefan
|
|
fidionael
      
Beiträge: 232
Win XP SP2, Ubuntu 6.06
Delphi 7 PE, Delphi 3 Prof
|
Verfasst: Fr 17.03.06 10:13
Hallo,
ich bin mir ehrlich gesagt gar nicht so sicher, ob ich deinen Quelltext verstehe...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var Picture: TPNGObject; begin Picture := TPNGObject.Create;
Picture.LoadFromFile('D:\Test.png'); Picture.LoadFromFile('D:\Test.bmp');
Picture.SaveToFile('D:\Test2.png'); Picture.Free; end; |
An der markierten Stelle wird einfach direkt hintereinander eine png- und eine bmp-Datei geöffnet? Dir ist klar, dass dadurch das erste Öffnen (test.png) seine Wirkung verliert? Ansonsten bin ich mir auch nicht sicher was Gimp mit einer png-Datei alles anstellt beim Öffnen
Mfg
|
|
stiftmaster 
      
Beiträge: 149
|
Verfasst: Fr 17.03.06 10:20
Hallo,
die eine Zeile war noch aus n'm Test - natürlich ist die überflüssig gewesen. Hatte versucht, die PNG-Datei zu laden, dann als BMP zu speichern, dann die BMP-Datei zu laden und als PNG-Datei zu speichern  Hat auch net geklappt... aus diesem Versuch stammte die Zeile... Hier die überarbeitete Version:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var Picture: TPNGObject; begin Picture := TPNGObject.Create; Picture.LoadFromFile('D:\Test.png'); Picture.SaveToFile('D:\Test2.png'); Picture.Free; end; |
Bis dann
Stefan
|
|
stiftmaster 
      
Beiträge: 149
|
Verfasst: Fr 17.03.06 17:30
Hallo,
hab mal ein bissle weiter im Web gesucht und folgendes gefunden: | Zitat: | | Dem einen oder anderen wird sicherlich schon mal das kleine Problemchen untergekommen sein, daß Photoshop – in meinem Fall Version 7 – einen eher skurrilen Gammawert für PNG/24Bit mit Alphakanal auswählt, wenn man Bild mit ‘Für Web speichern’ exportiert. |
Leider weiß ich nicht, wie ich den Gammawert über TPNGImage auslesen kann, geschweige denn überschreiben und wenn mit welchem Wert  Vielleicht hilft die Info ja jemandem weiter *hoff*
Stefan
EDIT:
Habe soeben mal zwei Grafiken angehängt. Photoshop.png ist die original in PS erstellte Datei und die Gimp.png ist die, nachdem ich die Datei durch Gimp gejagt habe. Habe beide Dateien in Delphi geladen, kann aber keinen Unterschied feststellen 
Einloggen, um Attachments anzusehen!
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mi 29.03.06 17:49
Im Internet Explorer sehe ich aber auch keinen Unterschied (zumindest bei meiner Monitoreinstellung). Und wenn es ein Photoshop-Problem ist, dann kannst du nicht den Internet Explorer beschuldigen.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
stiftmaster 
      
Beiträge: 149
|
Verfasst: Mi 29.03.06 17:55
Hi,
du musst die Grafiken nebeneinander anschauen - dann siehst du ganz klar n' Unterschied. Bau dir am besten n' kleine HTML-Datei, wo beide included werden
Ob es ein IE-Bug ist oder ein Photoshop-Bug kann ich nicht sagen. Sagen wir, es ist ein Kompabilitäts-Problem. Ich weiß nicht, wer da falsch mit dem PNG-Format umgeht. Ich vermute einfach, dass es der IE ist - immerhin kann er auch nicht mit transparenten PNGs umgehen
Ansonsten hab ich leider immer noch keinen Plan, wie ich das Problem in den Griff bekomme
Bis dann
Stefan
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mi 29.03.06 18:12
OK stimmt, aber nur kleines bisschen ^^.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
stiftmaster 
      
Beiträge: 149
|
Verfasst: Mi 29.03.06 18:16
jo - genau das ist aber das Problem - wenn man n' Hintergrund in der Farbe hat und darüber Grafiken legt, dann sieht das ganz schön mies aus  Und das kommt auf den Seiten, die wir machen, net nur einmal vor
Bis dann
Stefan
|
|
Simon Joker
      
Beiträge: 236
Erhaltene Danke: 1
|
Verfasst: Fr 31.03.06 13:11
Hi stiftmaster
Der Alphawert des PNG entspricht einem 8-bit-BMP mit der selben Größe des des reine Color-BMPs. Zugreifen kannst du über PNGImage.AlphaScanline. AlphaScanline steht nur zurverfügung, wenn des PNG einen Alphakanal besitzt (erzeugen des Alphachannels CreateAlpha; entfernen RemoveTransparency). Die möglichen AlphaWerte liegen bei 0..255 (deckend..transparent).
Wenn du bei den PNG's den Alphachannel nicht brauchst kill ihn, denn er braucht nur Platz.
MfG Simon
|
|
stiftmaster 
      
Beiträge: 149
|
Verfasst: Fr 31.03.06 16:32
Hi,
vielen Dank für den Hinweis. Ich habe jetzt mal folgendes programmiert:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var Picture: TPNGObject; begin Picture := TPNGObject.Create;
Picture.LoadFromFile('D:\Test1.png'); Picture.RemoveTransparency; Picture.SaveToFile('D:\Test1-1.png');
Picture.Free; |
Leider besteht der Fehler immer noch und die Datei ist auch noch genauso groß wie vorher. Mache ich irgendetwas falsch?
Dankend
Stefan
|
|