werbeklaus: Grafiken auslesen mit C++

Hallo ihr,
ich bin langjährig gewohnter PHPler, und habe in den letzten tagen ein Programm damit geschrieben, dass sehr auf dem Zugriff auf eine Bilddatei (hauptsächlich Pixelfarbe bestimmen) beruht.
Da PHP für offline-Anwendungen, also einfach zum durchrechnen eines Skriptes nicht die effektivste Sprache ist (und die Dauer des durchlaufs jede vermutung gesprengt hat *g*) möchte ich das Programm gerade auf C++ umschreiben.
Hier habe ich leider nicht so viel Erfahrung, habe mir jetzt die Basics allerdings schon angeeignet, sodass ich denke, die meisten Teile meines Programmes auch in C++ hinzubekommen. Leider gibt es da eine Ausnahme, die mir schon einige Nachmittag gekostet hat: Wie bekomme ich gescheiten Zugriff auf das Bild.

In PHP stellt das kein Problem dar. Das Bild ist ruckzug eingelesen, und mit imagecolorat() habe ich sofort den Farbwert. GD is ja glücklicherweise gleich dabei.
In C++ scheitere ich hoffnungslos dabei. Ich habe mich schon sehr ausgiebig durch ImageMagick oder libPNG-Seiten gewühlt, aber komme einfach nicht zu potte. Dabei ist das Problem oft schon, die richtigen Libs dem Compiler zu übergeben.
Kann das denn so schwer sein? Bedarf das, was in PHP mit 2 Zeilen geschieht, wirklich wochenlangem Einarbeiten in C++?
Ich würde mich freuen, wenn jemand einen Tip für mich hat, wie ich möglichst leicht und Einsteigerfreundlich den Farbwert eines bestimmten Pixels bekomme - denn das ist erstmal das einzige, was ich bräuchte...

Vielen Dank allerseits,
werbeklaus

  1. Du kannst GD (obwohl in C geschrieben) auch in C++ einbinden und verwenden. Die Funktionen sind dabei mit den PHP-Equivalenten weitestgehend identisch.

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,
      vielen Dank für deinen Tipp.

      Du kannst GD (obwohl in C geschrieben) auch in C++ einbinden und verwenden. Die Funktionen sind dabei mit den PHP-Equivalenten weitestgehend identisch.

      Ich bin dem nachgegangen und bin schnell zu Erfolg gekommen. Genau so etwas habe ich gesucht.
      Was mir noch fehlt ist eine Übersicht mit den Funktionsnamen in C++, da hat mir auch google nicht geholfen. Bisher ist es halt mit viel rumprobieren und raten anhand der PHP-Namen verbunden *gg*.

      Also danke nochmals, und einen schönen Start ins Wochenende!
      werbeklaus

      1. Hello,

        Ich bin dem nachgegangen und bin schnell zu Erfolg gekommen. Genau so etwas habe ich gesucht.
        Was mir noch fehlt ist eine Übersicht mit den Funktionsnamen in C++, da hat mir auch google nicht geholfen. Bisher ist es halt mit viel rumprobieren und raten anhand der PHP-Namen verbunden *gg*.

        http://lua-gd.luaforge.net/manual.html

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hallo,

          http://lua-gd.luaforge.net/manual.html

          Danke auch nochmals für diese URL, auch wenn das nicht direkt für C++ ist hilft es gut weiter.

          Gruß,
          werbeklaus

      2. Hallo,

        Was mir noch fehlt ist eine Übersicht mit den Funktionsnamen in C++,

        http://www.libgd.org/Reference

        Viele Grüße,
        Christian

  2. Hello,

    In C++ scheitere ich hoffnungslos dabei. Ich habe mich schon sehr ausgiebig durch ImageMagick oder libPNG-Seiten gewühlt, aber komme einfach nicht zu potte. Dabei ist das Problem oft schon, die richtigen Libs dem Compiler zu übergeben.

    Na prima, da können wir uns ja zusammentun.
    Ich kämpfe mich gerade damit ab, mir eine MySQL-API für C++ zu basteln.
    Da gibt es also die C-API. Und es gibt MySQL++. Und beides soll nun zusammengebaut werden.
    Hörte sich echt einfach an am Anfang aber der Stapel mit den Readme-Dateien wird inzwischen immer dicker...

    In C++ kannst Du die Datei in einen Stream einlesen und dann in diesem navigieren. Da kannst Du dann jedes Byte untersuchen, vorausgesetzt, das Biest passt in den Arbeitsspeicher. Sonst wird es wirklich lustig.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hello,

      Ich kämpfe mich gerade damit ab, mir eine MySQL-API für C++ zu basteln.
      Da gibt es also die C-API. Und es gibt MySQL++. Und beides soll nun zusammengebaut werden.
      Hörte sich echt einfach an am Anfang aber der Stapel mit den Readme-Dateien wird inzwischen immer dicker...

      Die Kompilation der Fils und der Library hat soweit geklappt. Die Programme lauen alle.

      Nun in Wascana/Eclipse C++ bekomme ich die Lib und die *.h-Files nicht eingebunden.
      Das Teil weigert sich strikt, die Libs anzuerkennen.

      Das #include wide dabei aber gar nicht mehr rot markiert...
      Nur der Fehlertext ist reichtlich vorhanden

      **** Rebuild of configuration Debug for project Datenbank ****

      **** Internal Builder is used for build               ****
      g++ -I -I -I -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Datenbank.o ..\src\Datenbank.cpp
      In file included from ..\src\Datenbank.cpp:29:
      C:\mysql++\examples\printdata.h:31:21: mysql++.h: No such file or directory
      In file included from ..\src\Datenbank.cpp:29:
      C:\mysql++\examples\printdata.h:34: error: mysqlpp' has not been declared C:\mysql++\examples\printdata.h:34: error: expected ,' or ...' before '&' token C:\mysql++\examples\printdata.h:34: error: ISO C++ forbids declaration of Row' with no type
      C:\mysql++\examples\printdata.h:35: error: mysqlpp' has not been declared C:\mysql++\examples\printdata.h:35: error: expected ,' or ...' before '&' token C:\mysql++\examples\printdata.h:37: error: ISO C++ forbids declaration of sql_char' with no type
      C:\mysql++\examples\printdata.h:38: error: mysqlpp' has not been declared C:\mysql++\examples\printdata.h:38: error: variable or field print_stock_rows' declared void
      C:\mysql++\examples\printdata.h:38: error: StoreQueryResult' was not declared in this scope C:\mysql++\examples\printdata.h:38: error: res' was not declared in this scope
      C:\mysql++\examples\printdata.h:39: error: mysqlpp' has not been declared C:\mysql++\examples\printdata.h:39: error: variable or field print_stock_table' declared void
      C:\mysql++\examples\printdata.h:39: error: Query' was not declared in this scope C:\mysql++\examples\printdata.h:39: error: query' was not declared in this scope
      ..\src\Datenbank.cpp:40: warning: ISO C++ forbids declaration of main' with no type ..\src\Datenbank.cpp: In function int main(int, char**)':
      ..\src\Datenbank.cpp:48: error: mysqlpp' has not been declared ..\src\Datenbank.cpp:48: error: Connection' was not declared in this scope
      ..\src\Datenbank.cpp:48: error: expected ;' before "conn" ..\src\Datenbank.cpp:49: error: conn' was not declared in this scope
      ..\src\Datenbank.cpp:52: error: mysqlpp' has not been declared ..\src\Datenbank.cpp:52: error: Query' was not declared in this scope
      ..\src\Datenbank.cpp:52: error: expected ;' before "query" ..\src\Datenbank.cpp:53: error: mysqlpp' has not been declared
      ..\src\Datenbank.cpp:53: error: StoreQueryResult' was not declared in this scope ..\src\Datenbank.cpp:53: error: expected )' before "res"
      ..\src\Datenbank.cpp:55: error: res' was not declared in this scope ..\src\Datenbank.cpp:60: error: query' was not declared in this scope
      ..\src\Datenbank.cpp:60: warning: unused variable 'query'
      ..\src\Datenbank.cpp:53: warning: unused variable 'StoreQueryResult'
      ..\src\Datenbank.cpp:52: warning: unused variable 'Query'
      ..\src\Datenbank.cpp:48: warning: unused variable 'Connection'
      Build error occurred, build is stopped
      Time consumed: 844  ms.

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de