Einzelnen Beitrag anzeigen

CarlAshnikov

Registriert seit: 18. Feb 2011
Ort: Erfurt
108 Beiträge
 
Delphi XE5 Enterprise
 
#4

AW: PNG 16 Bit Grayscale erzeugen

  Alt 29. Nov 2011, 07:31
Fehlermeldungen hier auch hinzuschreiben ist total out mittlerweile, oder?
Falls es etwas hilft, aus der PNGImage.pas:
Code:
{Saves the PLTE chunk to a stream}
function TChunkPLTE.SaveToStream(Stream: TStream): Boolean;
var
  J: Integer;
  DataPtr: pByte;
  BitmapInfo: TMAXBITMAPINFO;
  palEntries: TMaxLogPalette;
begin
  {Adjust size to hold all the palette items}
  if fCount = 0 then fCount := Header.BitmapInfo.bmiHeader.biClrUsed;
  ResizeData(fCount * 3);
  {Get all the palette entries}
  fillchar(palEntries, sizeof(palEntries), #0);
  GetPaletteEntries(Header.ImagePalette, 0, 256, palEntries.palPalEntry[0]);
  {Copy pointer to data}
  DataPtr := fData;

  {Copy palette items}
  BitmapInfo := Header.BitmapInfo;
  FOR j := 0 TO fCount - 1 DO
    with palEntries.palPalEntry[j] do
    begin
      DataPtr^ := Owner.InverseGamma[peRed]; inc(DataPtr); <---- Exception
      DataPtr^ := Owner.InverseGamma[peGreen]; inc(DataPtr);
      DataPtr^ := Owner.InverseGamma[peBlue]; inc(DataPtr);
    end {with BitmapInfo};

  {Let ancestor do the rest of the work}
  Result := inherited SaveToStream(Stream);
end;
Folgender Fehler tritt auf:

Zugriffsverletzung bei Adresse 00450768 in Modul 'Project1.exe'. Lesen von Adresse 00134000. Prozess angehalten. ...

Ich gehe davon aus, dass an mancher Stelle mit 16 Bit und an anderer Stelle mit 8 Bit gearbeitet wird und dann auf Speicherbereiche zugegriffen wird wo einfach nichts ist.

Zitat:
Hab so die Erfahrung das diese mit 16-Bit Farbtiefe so ihre Probleme hat (Falschfarben) ...
Ist mir eigentlich egal da ich nur Grauwerte brauche . Oder betrifft die das auch?

Wie gesagt, ich muss das Problem nicht mit dieser Komponente lösen habe aber beim Suchen noch kein andere gefunden.
Sebastian
  Mit Zitat antworten Zitat