B/W Pixel -> Linie -> Rechteck ?

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

B/W Pixel -> Linie -> Rechteck ?

Beitrag von AUGE_OHR »

in M$ Paint kann ich ja einen Text schreiben und dann als Bitmap abspeichern.

da der Text nur B/W ist sollte man die Pixel Farbe unterscheiden könnten.

Code: Alles auswählen

   FOR x = 1 TO xMax
      FOR y = 1 TO yMax
         nColor := @GDI32:Getpixel(x,y)
         IF nColor = nBlack
            // old Code for each Pixel
            AADD(aPixel, {x,y})
an diesen Punkt merke ich mir die Koordinaten und stanze das später in der Maske aus.
nun bin ich am überlegen wie man die Menge der Koordinaten verringern kann.

Code: Alles auswählen

            // new Pixel -> Line ? 
            aEnde := {x,y}
         ELSE
            IF aEnde[1] <> 0 .AND. aEnde[2] <> 0
               Ganzen_Block(aAnfang,aEnde)
            ENDIF   
            aAnfang := {x,y}
            aEnde := := {0,0} 
      	 ENDIF
statt einzelner Pixel bekomme ich nun eine Linie ... aber davon wieder viele.
... und wie bekomme ich nun die Linien zu einem Rechteck optimiert :?:
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: B/W Pixel -> Linie -> Rechteck ?

Beitrag von Tom »

Punkte nebeneinander: Linie.
Linien untereinander (Anfangs- und Endkoordinate gleich, aber um ein Pixel nach unten versetzt): Rechtecke.

Das ist übrigens ein ganz klassischer Kompressionsansatz. Die ersten Algorithmen, die Daten - vor allem Texte - eingedampft haben, haben in der ersten Stufe Wiederholungen eingesammelt.
Herzlich,
Tom
Antworten