shila: bildbreite und bildhöhe in C ermitteln

Hallo Leute,

bin etwas verzweifelt. Hat jemand ein Beispiel, dem ich entnehmen kann, wie man ein Bild einliest und Bilghöhe, Bildbreite und eventuell den mittleren Grauwert berechne?

Wäre euch echt dankbar,
Grüsse

  1. Hi,

    wie man ein Bild einliest und Bilghöhe, Bildbreite und eventuell den mittleren Grauwert berechne?

    Dazu muesste man zuallererst wissen, in welchem (Datei-)Format das Bild vorliegt ... und das in C zu machen, ist so, als ob Du das Rad neu erfinden wolltest.

    Ansonsten verwende ich zur Ermittlung von Bildhoehe und -breite gerne 'identify' aus dem ImageMagick-Paket.

    1. gehte es denn nicht, dass man das bild einliest und dann die
      bildbreite und höhe mit hilfe eines pointers auf das erste pixel
      berechnet?

      1. Moin!

        gehte es denn nicht, dass man das bild einliest und dann die
        bildbreite und höhe mit hilfe eines pointers auf das erste pixel
        berechnet?

        Bild einlesen - gute Idee.

        Aber die Breite und Höhe steckt in Abhängigkeit vom Bildformat (BMP, TIF, PNG, JPG,...) jeweils an einer anderen Position. Wenn dir also das Speicherformat des Bildes bekannt ist, kannst du dann eigentlich recht direkt auslesen, welche Dimension das Bild hat.

        Es könnte aber hilfreich sein, diesbezüglich die Suche nach entsprechenden Bibliotheken aufzunehmen.

        - Sven Rautenberg

    2. Hi!

      Joah, ImageMagick wäre natürlich eine gute Möglichkeit. Eine andere wäre die GD-Library von Thomas Boutell, welche ebenfalls kostenlos zu bekommen ist. Wenn ich nur Höhe und Breite auslesen möchte, greife ich lieber dazu.
      Allerdings ist die Frage nach dem Bildformat ja noch offen. Mittels GD kämen da nicht soviele Formate wie mit ImageMagick in Frage. Die im Web vertretenen (GIF, PNG, JPG, SWF) werden aber unterstützt.
      Es geht doch um das Web, oder? Weil die Frage hier im Forum gestellt wurde, vermute ich mal, daß die Angaben serverseitig aus den Bildern gelesen werden sollen? Oder geht es um etwas anderes..?

      Wie aber Joerg auch schon sagte, würde ich das Rad ebenfalls nicht neu erfinden, sondern auf eine bewährte Open Source Lösung wie Imagemagick oder GD setzen.

      Gruß, rob

  2. Hallo Shila,

    bin etwas verzweifelt. Hat jemand ein Beispiel, dem ich entnehmen kann, wie man ein Bild einliest und Bilghöhe, Bildbreite und eventuell den mittleren Grauwert berechne?

    Du könntest http://sourceforge.net/projects/opencvlibrary/ benutzen. Die Bibliothek hat entsprechende Funktionen um auf Bildinformationen und Inhalt zuzugreifen und kann noch einiges mehr ;-)

    Gruß,
    Maddin

    1. Hallo,

      Du könntest http://sourceforge.net/projects/opencvlibrary/ benutzen.

      Ähm, sorry, was is'n das für ein Krampf?
      Wenn ich die Version für Windows haben möchte, kriege ich einen fast 15MB großen Windows-Installer. Das kann ja wohl nicht wahr sein.
      Wenn mir eine C-Library angeboten wird, erwarte ich eigentlich eher ein Archiv mit einem Haufen C-Sources und Headerfiles, eventuell das eine oder andere Makefile, und eine Anleitung (als TXT, RTF, PDF, whatever), die mir die Schnittstellen und die Anwendung erklärt.
      Was hat ein Windows-Installationspaket hier zu suchen? Gar nichts!

      Ciao,

      Martin

      1. Hi,

        Ähm, sorry, was is'n das für ein Krampf?

        Hast du dir mal die Mühe gemacht, das ganze anzusehen? Da sind Templates für Borland, VC++ 6 und .NET dabei, ebenso wie eine Doku.
        Daku wird der PATH eingetragen und Shortcuts erstellt. Insgesammt Sachen, die das Arbeiten erleichtern. Wenn du das als Krampf bezeichnest, vermute ich mal, du hast von Programmieren keine Ahnung.

        Wenn ich die Version für Windows haben möchte, kriege ich einen fast 15MB großen Windows-Installer. Das kann ja wohl nicht wahr sein.

        Ach, das hast du zu entscheiden, wie gross ein Programmierer sein Projekt machen darf?

        Wenn mir eine C-Library angeboten wird, erwarte ich eigentlich eher ein Archiv mit einem Haufen C-Sources und Headerfiles, eventuell das eine oder andere Makefile, und eine Anleitung (als TXT, RTF, PDF, whatever), die mir die Schnittstellen und die Anwendung erklärt.

        Das beweisst, das du nichtmal nachgeschaut hast, was in den 15 MB enthalten ist. Da gibts ziemlich viel an SOurces und Headerfiles. Was genau fehlt dir denn in dem Paket? (Aber vorsicht, wenn du noch mehr willst, werden es auch mehr als 15 MB, was du auch wieder nicht willst)

        Was hat ein Windows-Installationspaket hier zu suchen? Gar nichts!

        Also entscheidest du das auch noch für den Programmierer? Ich werd in Zukunft bei dir Anfragen, wie mein nächstes Projekt auszusehen hat, wenn du der Gottvater bist, der entscheidet, wie gross ein Projekt zu sein hat, welches Format die Downloaddatei zu haben hat und welche Dateien drin sein müssen.

        1. Hallo Manuel,

          nun mach mal bitte halblang, ja!

          Hast du dir mal die Mühe gemacht, das ganze anzusehen? Da sind Templates für Borland, VC++ 6 und .NET dabei, ebenso wie eine Doku.

          Schön. Warum kann man das nicht in eine "harmlose" Form verpacken, eben ein ganz normales zip-Archiv?

          Daku wird der PATH eingetragen und Shortcuts erstellt.

          Genau die Sachen, die ich nicht haben will! Sowas richte ich mir dann schon selbst ein. Weiß ich, was dieser Installer sonst noch alles an meinem System verkonfiguriert?

          Insgesammt Sachen, die das Arbeiten erleichtern.

          Wenn sie offengelegt und beschrieben werden, hab ich nichts dagegen.

          Wenn du das als Krampf bezeichnest, vermute ich mal, du hast von Programmieren keine Ahnung.

          Mutig, mutig.

          Ach, das hast du zu entscheiden, wie gross ein Programmierer sein Projekt machen darf?

          Es ist nicht die Größe, die ich kritisiere (okay, schon auch ein bisschen), sondern die Art der "Verpackung".

          Wenn mir eine C-Library angeboten wird, erwarte ich eigentlich eher ein Archiv mit einem Haufen C-Sources und Headerfiles, eventuell das eine oder andere Makefile, und eine Anleitung (als TXT, RTF, PDF, whatever), die mir die Schnittstellen und die Anwendung erklärt.

          Das beweisst, das du nichtmal nachgeschaut hast, was in den 15 MB enthalten ist.

          Wie denn? Ich starte doch nicht einfach auf blauen Dunst eine EXE-Datei, von der ich vorher nicht weiß, was sie alles anstellt.

          Da gibts ziemlich viel an SOurces und Headerfiles.

          Schön. Warum macht man die nicht einfach zugänglich?

          Was hat ein Windows-Installationspaket hier zu suchen? Gar nichts!
          Also entscheidest du das auch noch für den Programmierer?

          _Nur_ das!
          Programme oder Installationspakete, von denen ich nicht genauestens weiß, was sie bei der Installation tun, rufe ich erstmal nur auf einem isolierten PC auf und schaue mir hinterher an, was alles verändert worden ist. Wenn ich dann zu der Überzeugung komme, dass das harmlos und in meinem Sinn ist, kann ich das auch auf einem "richtigen" Rechner machen. Vorher nicht.
          Wenn die Programmbeschreibung diesen Aufwand nicht rechtfertigt, dann lass ich es eben bleiben und sehe mich nach einer anderen Quelle um.

          Ich werd in Zukunft bei dir Anfragen, wie mein nächstes Projekt auszusehen hat, wenn du der Gottvater bist, der entscheidet, wie gross ein Projekt zu sein hat, welches Format die Downloaddatei zu haben hat und welche Dateien drin sein müssen.

          Meinetwegen. Ich versteh zwar deine Polemik nicht, aber sei's drum. Ich mag es nur nicht, wenn ich die Katze im Sack installieren soll. Da wird der mündige PC-Benutzer einfach überrollt. _DAS_ kreide ich an, sonst nichts.

          So long,

          Martin

          1. Hi,

            Wie denn? Ich starte doch nicht einfach auf blauen Dunst eine EXE-Datei, von der ich vorher nicht weiß, was sie alles anstellt.

            Gratulation. Wer auf seinem Rechner alle Programme so gut kennt um genau zu wissen, was sie tun, hat meinen Respekt. Das bedeutet allerdings zwangsläufig, das du von Closed Source Software noch nie was ausprobiert hast, geschweige denn benutzt.
            Wie du alledings ohne Windows überhaupt die .EXE erwähnst, ist mir rätselhaft. (Wenn du Windows benutzt, fürst du deine eigene Aussage ad absurdum)

            Da gibts ziemlich viel an SOurces und Headerfiles.

            Schön. Warum macht man die nicht einfach zugänglich?

            Bist du so engstirnig oder tust du nur so? Die Linuxversion ist eine tar.gz. Und da du ja nur Software nutzt, bei der du weisst, was sie anstellt, benutzt du ja Opsensource und ich tippe dann mal auf Linux. Also wo ist jetzt dein Problem?

            Was hat ein Windows-Installationspaket hier zu suchen? Gar nichts!
            Also entscheidest du das auch noch für den Programmierer?

            _Nur_ das!
            Programme oder Installationspakete, von denen ich nicht genauestens weiß, was sie bei der Installation tun, rufe ich erstmal nur auf einem isolierten PC auf und schaue mir hinterher an, was alles verändert worden ist. Wenn ich dann zu der Überzeugung komme, dass das harmlos und in meinem Sinn ist, kann ich das auch auf einem "richtigen" Rechner machen. Vorher nicht.

            Hast du ein Glück. Wenn du das mit Windows versucht hättest, würdest du es eh nie im Internet etc. einsetzen.

            Wenn die Programmbeschreibung diesen Aufwand nicht rechtfertigt, dann lass ich es eben bleiben und sehe mich nach einer anderen Quelle um.

            Wenn du unfähig bist zu lesen, kannst du das dem Programmierer nicht ankreiden.

            Meinetwegen. Ich versteh zwar deine Polemik nicht, aber sei's drum. Ich mag es nur nicht, wenn ich die Katze im Sack installieren soll. Da wird der mündige PC-Benutzer einfach überrollt. _DAS_ kreide ich an, sonst nichts.

            Wie schon gesagt, wenn du eine Datei aus allen Angebotenen rausziehst und dich drüber aufregst, obwohl das von dir geforderte offensichtilich vorhanden ist, zeigt mir das, das du zwar stänkern kannst, aber nicht lesen. Und das zeigt gleichzeitig, ads du von Programmieren keine Ahnung hast, sonst würdest du lesen.
            Und das hat mit Mut nichts zu tun, das ist eine logisch Schlussfolgerung. Es kann aber auch neid von deiner Seite sein, das ein Projekt besser ankommt als vielleicht dein eigenes.

            PS: Als mündig würde ich dich nach deinen Aussagen in keiner Weise bezeichnen.

            1. Hallo,

              Gratulation. Wer auf seinem Rechner alle Programme so gut kennt um genau zu wissen, was sie tun, hat meinen Respekt. Das bedeutet allerdings zwangsläufig, das du von Closed Source Software noch nie was ausprobiert hast, geschweige denn benutzt.

              Lesen ist nicht deine Stärke?
              Ich schrieb sinngemäß: Ausprobieren ja, wenn die Beschreibung hinreichend interessant ist, dann aber zunächst nur auf einem isolierten Testrechner.
              Merke: Closed Source ist auch (fast) Open Source. Du hast schon mal von Disassembler, Hex-Editor, Debugger oder Dateivergleich gehört? Auch anhand ihrer Wirkungen lässt sich eine Software sehr gut analysieren.

              Wie du alledings ohne Windows überhaupt die .EXE erwähnst, ist mir rätselhaft. (Wenn du Windows benutzt, fürst du deine eigene Aussage ad absurdum)

              Ach so. Wenn du mit deinem Wissen und deinen Möglichkeiten nicht in der Lage bist, Windows verantwortungsbewusst zu benutzen, ist das schade für dich, aber das solltest du dann nicht pauschal auf andere übertragen.

              Bist du so engstirnig oder tust du nur so? Die Linuxversion ist eine tar.gz.

              Die Linux-Version interessiert mich einen Dreck. Und wenn ich mir als Windows-User erst die Linux-Version einer Software laden soll, um die Dokumentation lesen zu können, ist das ein Armutszeugnis für diejenigen, die die Downloads zusammenstellen und aufbereiten.

              Hast du ein Glück. Wenn du das mit Windows versucht hättest, würdest du es eh nie im Internet etc. einsetzen.

              Ja, das sagen natürlich Leute, die mit ihrem System naiv und sorglos umgehen und bedenkenlos alles anklicken, was ihnen vor die Flinte kommt. Ich nutze das Internet seit über fünf Jahren intensiv mit Windows-PCs, zuerst lange Zeit mit Windows 98, mittlerweile auch Windows 2000. Die Probleme und Sicherheitslücken kenne ich aber immer nur vom Hörensagen oder aus der Presse. Ich selber habe sie nie erlebt, haptsächlich deshalb, weil ich vorsichtig und überlegt mit dem System umgehe.

              Wenn du unfähig bist zu lesen, kannst du das dem Programmierer nicht ankreiden.

              Wenn du unfähig bist zu begreifen, kannst du das deinem Gesprächspartner nicht ankreiden.

              Es kann aber auch neid von deiner Seite sein, das ein Projekt besser ankommt als vielleicht dein eigenes.

              Es ist mir völlig schnurz, wie gut anderer Leute Projekte ankommen. Neid oder gar Konkurrenzdenken ist fehl am Platze, weil meine Schwerpunkte bzw. Projekte in ganz andere Richtungen gehen.

              PS: Als mündig würde ich dich nach deinen Aussagen in keiner Weise bezeichnen.

              Danke, dito.
              Billige Polemik verzapfen und andere blöd anlabern ist nicht gerade ein Zeichen von diplomatischer Qualität, zumal du auch keinerlei Fachwissen erkennen lässt. Du solltest an deinem Anstand und deiner Kommunikation arbeiten, es ist noch nicht alles verloren.

              Viel Glück weiterhin,

              Martin

              1. Hi,

                Merke: Closed Source ist auch (fast) Open Source. Du hast schon mal von Disassembler, Hex-Editor, Debugger oder Dateivergleich gehört? Auch anhand ihrer Wirkungen lässt sich eine Software sehr gut analysieren.

                Dann graturliere ich dir, das du Windows soweit analysiert hast, das du genau weisst, was es tut. Dann bist du wohl der intelligensteste Mensch der Welt, da nicht mal die einzelnen Entwickler genau wissen, was alle Teile von Windows exakt machen.

                Ach so. Wenn du mit deinem Wissen und deinen Möglichkeiten nicht in der Lage bist, Windows verantwortungsbewusst zu benutzen, ist das schade für dich, aber das solltest du dann nicht pauschal auf andere übertragen.

                Es ist faszinierend, das du weisst, was ich kann udn was nicht. Kennen wir us etwa und ich weiss nichts advon? Oder bist du gar Hellseher?

                Die Linux-Version interessiert mich einen Dreck. Und wenn ich mir als Windows-User erst die Linux-Version einer Software laden soll, um die Dokumentation lesen zu können, ist das ein Armutszeugnis für diejenigen, die die Downloads zusammenstellen und aufbereiten.

                Das meinte ich mit "engstirnig". Wenn mich eine Software interessiert, schau ich auch nach, ob das von mir gewünschte halt unter anderem Namen zu finden ist. Nur weil der Programmierer das von dir gewünschte etwas unglücklich als "Linux-ersion" bezeichnet, macht es in meinen Augen nicht schlecht. Schade, das du nicht willens bist, auch mal ungewöhnliches zu probieren und evtl. mal ein Paket für Linux zu laden. Sowas zeugt von Experentierfreudigkeit und von dem Willen etwas neues zu versuchen und Lösungen zu finde, die nicht auf dem Silbertablett serviert werden.

                Hast du ein Glück. Wenn du das mit Windows versucht hättest, würdest du es eh nie im Internet etc. einsetzen.

                Ja, das sagen natürlich Leute, die mit ihrem System naiv und sorglos umgehen und bedenkenlos alles anklicken, was ihnen vor die Flinte kommt. Ich nutze das Internet seit über fünf Jahren intensiv mit Windows-PCs, zuerst lange Zeit mit Windows 98, mittlerweile auch Windows 2000. Die Probleme und Sicherheitslücken kenne ich aber immer nur vom Hörensagen oder aus der Presse. Ich selber habe sie nie erlebt, haptsächlich deshalb, weil ich vorsichtig und überlegt mit dem System umgehe.

                s.o. Sag mir bitte, woher wir uns kennen und wann du gesehen hast, das ich mit meinen Windows-Systemen sorglos und naiv umgehe.

                Wenn du unfähig bist zu begreifen, kannst du das deinem Gesprächspartner nicht ankreiden.

                Stimmt, ich begreife nicht, das jemand alles vor die Nase gesetzt bekommen will, und wenns nicht egnau das ist, was gewünscht wurde, wirds als "Krampf" bezeichnet. Interessante Einstellung.

                Es ist mir völlig schnurz, wie gut anderer Leute Projekte ankommen. Neid oder gar Konkurrenzdenken ist fehl am Platze, weil meine Schwerpunkte bzw. Projekte in ganz andere Richtungen gehen.

                Ach dann darfst nur du _andere_ Projekte runtermachen?

                Billige Polemik verzapfen und andere blöd anlabern ist nicht gerade ein Zeichen von diplomatischer Qualität, zumal du auch keinerlei Fachwissen erkennen lässt. Du solltest an deinem Anstand und deiner Kommunikation arbeiten, es ist noch nicht alles verloren.

                Was hat diplomatie mit polemik zu tun?
                Und wenn dir das feststellen, das du die Lunixsourcen auch für Windows nutzen kannst, nicht ausreicht, Fachwissen zu erkennen, ist das dein Problem.
                Aber schön, das du mich soviel besser kennst, als ich mich selbst. Mus schön sein, so allwissen zu sein ;))

              2. Hi,

                kleiner Nachtrag.

                Und wenn ich mir als Windows-User erst die Linux-Version einer Software laden soll, um die Dokumentation lesen zu können,

                Es gibt ein eigenes Paket mit der Dokumentation. Und dieses Paket ist auch entsprechend beschriftet. Aber wie gesagt, dazu müsste man lesen. Und du ziehst es ja vor, erstmal alles schlecht zu machen. Ist doch eh alles "Krampf"