tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
2455
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Stiff-Master Stiff-Master ist offline Grünschnabel
    Registriert seit
    Dec 2004
    Beiträge
    3
    Hallo

    ich möchte mit dem Borland Builder ein Bild laden, das dann in der Form angezeigt wird.
    Dann möchte ich wenn ich auf einen Button klicke, das aus allen Pixeln des Bildes die RGB Werte rausgelesen werden und die sollen dann in einer Txt Datei gespeichert werden.

    Kann mir da jemand helfen der weis wie das geht?

    Thx Steffen
     

  2. #2
    Avatar von PixelShader
    PixelShader PixelShader ist offline Mitglied Gold
    Registriert seit
    May 2004
    Ort
    Koeln
    Beiträge
    148
    Hi,
    Ich wuerde das so machen:
    In der Form erstellst du ein TImage dass das Bild auch anzeigt. Das speichern in die Datei machst du per TStringList::SaveToFile.
    Die Pixel holst du in Borland per Canvas::Pixels[x][y] raus. Dabei besteht ein Wert aus den drei farben direkt, also 0x00bbggrr.
    um Rot dann da raus zu kriegen schreib einfach: dwPixel&0xFF
    um Blau rauszukriegen: (dwPixel&0xFF00)/0x100 // Achtung Krammer ist wichtig

    Siehe anhang... ja ich hatte gerade nix anderes zu tuhn.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    TStringList *StrList;
    DWORD rgb;
    StrList = new TStringList();
     
    // Das Bild laden
    Image1->Picture->LoadFromFile( "X:\\Pfad\\Name.bmp" );
     
    // TStringList mit Daten Fuellen
    for(int y=0;y<Image1->Picture->Height;y++)
         for(int x=0;x<Image1->Picture->Width;x++)
         {
            rgb = Image1->Picture->Bitmap->Canvas->Pixels[x][y];
            StrList->Add(IntToStr(rgb&0xFF)+" "+
                               IntToStr((rgb&0xFF00)/0x100)+" "+
                               IntToStr((rgb&0xFF0000))/0x10000);
         }
    StrList->SaveToFile("Y:\\nocheinPfad\\nocheinName.txt");
    viel Spass
    Angehängte Dateien Angehängte Dateien
     

  3. #3
    Stiff-Master Stiff-Master ist offline Grünschnabel
    Registriert seit
    Dec 2004
    Beiträge
    3
    Super klappt einwandfrei :o)
    Danke Dir.

    Steffen
     

  4. #4
    ai-gamecock Tutorials.de Gastzugang
    gut dass noch kein häkchen da is *g*
    ich hätt nämlich auch mal ne Frage zu Farbwerten in Images:
    1.allgemein: wie definiere ich eine (beliebige) Farbe (in html wärs ja #FFFFFF, geht aber in C++ irgendwie nicht), die ich dann zB mit Canvas->Pixels... irgendwo hinmalen kann
    2. wie kann ich eine Farbe auslesen und verändern (z.B. dass es erst hellgrau ist und ich dann quasi ein rotes leuchten drauf"zauber")?
     

  5. #5
    basti_help basti_help ist offline Mitglied
    Registriert seit
    Jul 2005
    Beiträge
    10
    mhhh muss die RGB werte auch aus einer Bmp lesen!! Allerdings mach ich das mit Visual Studio und mir fehlt halt nur noch das auslesen der RGB werte und das schreiben der HSV werte
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    
    // Farbraum.cpp : Defines the entry point for the console application.
    //
     
    #include "stdafx.h"
    #include <iostream>
     
     
    using namespace std;
     
     
    int main()
    {
        int x, y;
        double R, G, B, Max, Min, H, S, V, r, g, b;
        unsigned char* pData;
        
        // read the image
        bool bSuccess = ReadBmp( "C:/P1000825.bmp", x, y, pData );
        if ( bSuccess == false )
        {
            cout << "*Error loading image!*" << endl;
            return 1;
        }
        
     
        R = r / 256.0; 
        G = g / 256.0;
        B = b / 256.0;
     
        if(R > G && R > B)Max = R;
        if(G > R && G > B)Max = G;
        if(B > G && B > R)Max = B;
     
        if(R < G && R < B)Min = R;
        if(G < R && G < B)Min = G;
        if(B < G && B < R)Min = B;
     
        if(R = Max)H = 0 + (G - B) / (Max - Min);
        if(G = Max)H = 2 + (B - R) / (Max - Min); 
        if(B = Max)H = 4 + (R - G) / (Max - Min);
     
        if(H < 0) H = H + 360;
     
        S = (Max- Min) / Max;
        V = Max;
     
        // write the image
        if ( WriteBmp( "output.bmp", x, y, pData ) == false )
        {
            cout << "*Error writing image!*" << endl;
            return 1;
        }
     
        fgetchar ();
     
        return 0;
    }

    Kann mir da bitte jemand helfen?
     

  6. #6
    The NightHawk The NightHawk ist offline Rookie
    Registriert seit
    Mar 2005
    Ort
    Altenberge
    Beiträge
    7
    Es gibt neben den RGB doch noch andere Farbwerte wie:
    Farbtiefe
    Saettigung
    Helligkeit
    und meine Frage lautet: Wie kann man diese auslesen, denn das mit den RGB hab ich verstanden, aber Frage mich nun wie ich an die anderen Werte komme ?

    Danke im Voraus
     
    Brauche dringend HILFE !

Ähnliche Themen

  1. Werte ein- und auslesen
    Von M4veR1ck im Forum Java
    Antworten: 5
    Letzter Beitrag: 27.04.10, 22:39
  2. Bestimmte Werte aus txt auslesen
    Von Teilzeitphilosoph im Forum C/C++
    Antworten: 18
    Letzter Beitrag: 18.02.10, 15:11
  3. X y Werte von PHP Bild Diagramm
    Von son gohan im Forum PHP
    Antworten: 1
    Letzter Beitrag: 10.03.09, 23:01
  4. Werte auslesen
    Von mafu im Forum Relationale Datenbanksysteme
    Antworten: 16
    Letzter Beitrag: 13.07.07, 12:39
  5. DHTML, Werte aus TR auslesen
    Von René Paschold im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 02.09.03, 12:57