TLazIntfImage unter OSX

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Wolfram
Beiträge: 23
Registriert: So 16. Mai 2010, 15:37

TLazIntfImage unter OSX

Beitrag von Wolfram »

Hallo allerseits,

nachdem die ersten Schwierigkeiten mit der Installation von Lazarus unter OSX überstanden sind (http://www.lazarusforum.de/viewtopic.php?f=4&t=3819" onclick="window.open(this.href);return false;) und ich inzwischen zumindest Programme umwandeln kann, stehe ich vor dem ersten inhaltlichen Problem.

Es geht um folgendes:

Ich lese aus Bilddateien verschiedener Digitalkameras deren Exif Daten sowie die Vorschaubilder aus. Es handelt sich hierbei i.d.R. um relativ kleine Bilder, so etwa im Bereich von 320*200 bis 570*375 Pixel.
Diese halte ich für den weiteren Zugriff in einer TImage Variablen. Da ich neben dem Bild auch dessen RGB Verteilung analysieren möchte, lese ich die Werte nun über ...Pixels[x,y] aus. Es handelt sich jeweils um 8Bit Werte für Rot, Grün und Blau.

Das klappt identisch und korrekt in Windows und OSX. Leider dauert es unter OSX sehr lange (rund 20 mal länger als unter Windows) und ist daher in der Praxis nicht einsetzbar. Dann habe ich TLazIntfImage gefunden und mich damit beschäftigt.

Der Zugriff ist jetzt tatsächlich um ein Vielfaches schneller. Aber: jetzt stimmen die über die GetPixel Funktion ausgelesen Daten nicht mehr; konkret bekomme ich unter unter OSX falsche RGB Werte.
Das bei TLazIntfImage 16bit Werte ausgelesen werden, habe ich gesehen. Da der Inhalt aber weiterhin nur ein Byte sein sollte, werden die gleich zb über color.red div 256 zurechtgestutzt. Das klappt in Windows einwandfrei, aber für OSX scheine ich etwas zu übersehen-
Vielleicht kann mir jemand einen Tip geben, ich suche mich hier schon den halben Tag blöd ;-)

Besten Gruß und auf ein erfolgreiches Halbfinale,

Wolfram

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: TLazIntfImage unter OSX

Beitrag von theo »

Wie rum falsch sind die denn? Also z.B. Rot und Blau vertauscht oder wie?
Ein Screenshot würde hier mehr sagen als viele Worte.

Wolfram
Beiträge: 23
Registriert: So 16. Mai 2010, 15:37

Re: TLazIntfImage unter OSX

Beitrag von Wolfram »

nun, wenn sie 'irgendwie rum' vertauscht wären, sollte man es ja eigentlich erkennen.

Als Beispiel jeweils die R,G,B Werte:
Pixel1: 88,57,21 (Windows) 65,43,20 (Mac)
Pixel2: 73,50,31 (Windows) 53,38,26 (Mac)
Pixel3: 69,50,21 (Windows) 50,38,21 (Mac)

Ich sehe hier keine Systematik. Oder übersehe ich da was?

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: TLazIntfImage unter OSX

Beitrag von theo »

Was schreibt das bei dir in die Titelzeile:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender:TObject);
begin
{$IFDEF ENDIAN_BIG}
 Caption:='Big Endian';
{$ENDIF}
{$IFDEF ENDIAN_LITTLE}
 Caption:='Little Endian';
{$ENDIF}
end;

Wolfram
Beiträge: 23
Registriert: So 16. Mai 2010, 15:37

Re: TLazIntfImage unter OSX

Beitrag von Wolfram »

moin,

jeweils LittleEndian.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: TLazIntfImage unter OSX

Beitrag von Scotty »

Wolfram hat geschrieben:...nachdem die ersten Schwierigkeiten mit der Installation von Lazarus unter OSX überstanden sind (http://www.lazarusforum.de/viewtopic.php?f=4&t=3819" onclick="window.open(this.href);return false;) und ich inzwischen zumindest Programme umwandeln kann...
Wie hast du das geschafft?

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: TLazIntfImage unter OSX

Beitrag von theo »

Wolfram hat geschrieben: jeweils LittleEndian.
Hmm, dann müsste es eigentlich gehen.
Da es aber keinen weiteren Anhaltspunkt gibt, kannst du trotzdem mal versuchen vor dem Div das Word zu swappen.
Also
SwapEndian(FPColor.Red) div 256
etc.
Einen Versuch ist's vielleicht wert.

Wolfram
Beiträge: 23
Registriert: So 16. Mai 2010, 15:37

Re: TLazIntfImage unter OSX

Beitrag von Wolfram »

danke Dir, das werde ich heute Abend mal ausprobieren, wenn ich wieder im Lande bin.
Die SwapEndian-Funktion kannte ich noch gar nicht...
Bin in den letzten Wochen Immer wieder positiv überrascht, wieviel in Lazarus steckt. Man muß es nur finden ;-)

Wolfram
Beiträge: 23
Registriert: So 16. Mai 2010, 15:37

Re: TLazIntfImage unter OSX

Beitrag von Wolfram »

Scotty hat geschrieben:
Wolfram hat geschrieben:...nachdem die ersten Schwierigkeiten mit der Installation von Lazarus unter OSX überstanden sind (http://www.lazarusforum.de/viewtopic.php?f=4&t=3819" onclick="window.open(this.href);return false;) und ich inzwischen zumindest Programme umwandeln kann...
Wie hast du das geschafft?
Solange neu installiert, bis es lief.

Ich weiß, das ist eine doofe Antwort, aber ich habe wirklich keine Anpassungen gemacht. Dafür weiß ich noch gar nicht, wo bei Lazarus/FPC vorne und hinten ist.
Ist aber alles unter OSX sehr holprig. Kompileren geht, -es wird ein ausführbares Programm erstellt,- aber Starten aus Lazarus oder erst recht Debuggen geht gar nicht.

PS: Lazarus 0.9.28.2 und fpc 2.24

Wolfram
Beiträge: 23
Registriert: So 16. Mai 2010, 15:37

Re: TLazIntfImage unter OSX

Beitrag von Wolfram »

theo hat geschrieben:...kannst du trotzdem mal versuchen vor dem Div das Word zu swappen.
Also SwapEndian(FPColor.Red) div 256 etc.
Hat leider nicht geklappt. Jetzt werden für jedes Pixel identische Werte angegeben (konkret r=191, g=255, b=221).

Habe mit der Funktion tLazIntfImage.DataDescription.AsString mir mal die Informationen zum LazIntfImage anzeigen lassen.
Das sieht soweit identisch aus, allerdings gibts hier eine Abweichung hinsichtlich Endianess:
auf dem Mac: ByteOrder: riboMSBFirstm auf Windows: riboLSBFirst.
PaletteByteOrder steht jeweils auf riboLSBFirst.

Bringt dich das vielleicht noch auf einen anderen Tip?
Gruß und Wolfram, Wolfram

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: TLazIntfImage unter OSX

Beitrag von theo »

Wolfram hat geschrieben: Bringt dich das vielleicht noch auf einen anderen Tip?
Ich kenn das Ding auch zu wenig. Das mit der Byte Order war nur so eine Vermutung.
Kann auch tatsächlich damit zusammenhängen, aber ich wüsste jetzt nicht im Detail was zu tun ist.
Frag mal auf der Lazarus-Mailing-Liste. Marc müsste da eig. Bescheid wissen.
http://lists.lazarus.freepascal.org/mai ... fo/lazarus" onclick="window.open(this.href);return false;

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: TLazIntfImage unter OSX

Beitrag von theo »

Wolfram, hättest du mal Zeit und Lust, was für mich auf OSX zu testen?
Hat durchaus mit dem Thema zu tun, vielleicht hilft es dir indirekt sogar bei deinem Problem.

Wolfram
Beiträge: 23
Registriert: So 16. Mai 2010, 15:37

Re: TLazIntfImage unter OSX

Beitrag von Wolfram »

theo hat geschrieben:Wolfram, hättest du mal Zeit und Lust, was für mich auf OSX zu testen?
Hat durchaus mit dem Thema zu tun, vielleicht hilft es dir indirekt sogar bei deinem Problem.
klar Theo, gerne.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: TLazIntfImage unter OSX

Beitrag von theo »

Wolfram hat geschrieben:klar Theo, gerne.
Danke, sehr freundlich! :)

Ich hab mal ein Projekt angehängt.
Im idealen Fall brauchst du das nur kompilieren und ausführen.
Dann müsste ein Foto auf dem Formular erscheinen.

Für mich ist die Sache aber totaler Blindflug. Ich kann nicht mal sagen, ob es kompiliert auf OSX.
Wenn es kompiliert, weiss ich nicht, ob das Bild erscheint.
Wenn das Bild erscheint, weiss ich nicht, ob die Farben richtig sind.

Bevor ich jetzt in die Details gehe: probier's doch einfach mal aus.
Nur soviel: Wenn es beim compilieren hakt, dann in lazbridge32 im Implementationsteil bei {$ifdef LCLCarbon}

Vielen Dank.
Dateianhänge
osxtest.zip
osx test
(79.63 KiB) 103-mal heruntergeladen

Wolfram
Beiträge: 23
Registriert: So 16. Mai 2010, 15:37

Re: TLazIntfImage unter OSX

Beitrag von Wolfram »

mache ich heute abend, bin noch im Dienst. Melde mich. Gruß, WOlfram

Nachtrag:
hast eine PN.

Antworten