Pixel direct aus Bitmap lesen



  • hi

    gibt es eine möglichkeit, ein Bitmap datei direkt zu öffnen und von da aus die pixel einzulesen ?? das mit dem einlesen weiß ich wie das geht, aber ich konnte es nur auf einem DC machen, nicht direkt aus einer datei.

    danke für eure hilfe ...



  • hallo,
    wieso willst du keinen DC erzeugen? Beim DC gibt es doch GetPixel() und SetPixel(). Wenn du das Bild nicht sehen willst nehm halt nen Speicher - DC.
    Turbobrain 😃



  • ich muß das direkt aus der datei lesen weil:
    ich male das bitmap ins dialogfeld. dabei wird eine bestimmte farbe transparent dargestellt, also nicht gezeichnet. dann kommt irgendwann eine andere funktion. die sucht auf dem dialogfeld so lange bis die transparente farbe kommt. nur auf dem dialogfeld ist die farbe ja nicht dargestellt.

    ich glaube jetzt verstehst du's 🕶

    und; kennst du ne lösung 😃 ??



  • Direkt aus dem File zu lesen geht nur binär, glaub ich.
    Ich weiß aber nicht wie das geht und es ist umständlich.
    So wie ich es verstanden habe, willst du das transparent gemachte Bild weiterhin bearbeiten. Also wenn es geht, nimm doch eine Kopie des ursprungsbildes, die noch nicht transparent ist.
    Turbobrain 😃



  • das bild wird ja niemals mit der transparenten farbe gemalt !! oder geht es so, das ist das bild auf ein nicht geöffnetes dialogfeld male (mit der transparenten farbe) und dann einfach von da lese !?

    könnte ich ja mal ausprobieren 😃



  • Hallo Red Skall,
    also zu meinem Verständnis, du hast ein Bild mit einer transparenten Farbe in einem File. Dieses möchtest du nun bearbeiten aber so dass auch die transparente farbe mit einbezogen wird.
    Ist es so???
    Turbobrain 😃



  • ich will das nicht bearbeiten, ich will nur daraus die pixel lesen, damit ich lesen kann auf welchen coordinaten die transparente farbe ist



  • Hallo Red Skall,
    jetzt habe ich verstanden (lange Leitung was, von hier bis nach Amerika).
    Aber vielleicht solltest du versuchen das Bild nach dem Laden in zwei DC's zu verfrachten und diese dann zu vergleichen. Mit GetPixel() (kommt bei mir ständig als Antwort 🕶 ) könntest du jeweils vergleichen.
    Ein vorgefertigte Funktion kenne ich nicht.
    Oder aber du schaust vor dem transparent machen, welche Pixel betroffen sind. Denn du weißt ja die transparente Farbe und könntest damit dann das Ursprungsbild absuchen.(Liege ich schon wieder falsch ? 😕 )
    Turbobrain 😃



  • hört sich gut an. habe gerade festgestellt: ein DC muß doch nicht abhängig von einem dialogfeld sein, oder ?? man kann doch auch ein bitmap in ein dc laden (nicht auf ein dialogfeld malen) und wie du gesagt hast dann auf das dc zugreifen, oder !?



  • Guten Tag,
    meine schon dass das geht. Liegt glaub ich an der Art des DC. Es gibt ja CDC, CPaintDC....
    Schau am Besten mal in der MSDN, was über die Klasse CDC geschrieben ist, oder ich machs.
    Turbobrain 😃



  • Hallo,
    ich habe mir ja diese transparentfunktion angeschaut, und dort wird noch ein schelleres Verfahren al mein GetPixel verwendet. Schau dir die Funktion mal an. Relativ am Ende findest du die drei BitBlt-Anweisungen. Nach der 2. glaub ich könntest du mal die GetAbfrage hinsetzen, wenn du die Positionen der Pixel wissen willst. wenn du auch noch die transparenten Bereiche anzeigen willst, kannst du das Bitmap nach dem zweiten SChritt kopieren.
    Turbobrain 😃



  • hat geklappt 😉 !! *freu*
    thanks @ turbobrain !!


Anmelden zum Antworten