Beschneiden der Ränder eines Bildes basierend auf der Farbe in Windows Phone

8

Oben ist das Bild, das ich verwende. Was ich versuche zu erreichen, ist das Entfernen des roten Randbereichs vom Bild. Wie kann ich das programmatisch in Windows Phone erreichen? Ich fand WriteableBitmapExtensions.Crop() Methode, aber ich bin verwirrt mit den Argumenten (wie kann ich die x, y-Position des Bildes sowie die Größe und die Breite finden?)

Auch ein anderes Problem, mit dem ich konfrontiert bin, ist: Ich werde die Bilder mit unterschiedlich großen Rahmen bekommen, so dass ich die x- oder y-Werte nicht fest codieren kann.
Kann jemand eine Lösung vorschlagen oder mich leiten, um das Problem zu lösen?

    
StezPet 06.06.2013, 12:05
quelle

1 Antwort

3

Das ist keine so triviale Sache und Sie haben uns keinen Code mitgeteilt, deshalb kann ich Ihnen ein paar Vorschläge machen. In jeder WriteableBitmap sind Breite und Höhe definiert. Sie sollten in der Lage sein, über

darauf zuzugreifen %Vor%

wo wb ist Ihre WriteableBitmap (das Bild)

Abgesehen davon ist es trivial, eine WriteableBitmap mit der WriteableBitmapEx-Bibliothek

zu beschneiden %Vor%

Wenn Ihr wb 320x240 war und der Rahmen eine Breite von 10 hatte, dann wird der obige Crop-Aufruf den Trick machen - Sie werden das innere Rechteck beginnend von Punkt (10,10) bis (310, 230) nehmen

Nun zu Ihrer zweiten Ausgabe - ohne die Breite der Grenze zu kennen. Es würde helfen, wenn Sie das wissen

  1. Border ist auf jeder Seite des Bildes gleich dick
  2. Border ist immer nur in einer Farbe

Wenn das wahr ist, könnte man sich einen einfachen Algorithmus vorstellen (der vielleicht nicht immer korrekt ist, aber Sie können ihn testen und anpassen), was ein paar zufällige Punkte erfordern würde, zum Beispiel

(0, randNumber & lt; wb.PixelHeight), (randNumber & lt; wb.PixelWidth, 0), (wb.PixelWidth, randNumber & lt; wb.PixelHeight), (randNumber & lt; wb.PixelWidth, wb.PixelHeight)

und bewegen Sie sich dann zum inneren Teil des Bildes, solange das Nachbarpixel die gleiche Farbe wie das Startpixel hat. Je mehr Punkte Sie zufällig ziehen, desto bessere Chancen haben Sie, es richtig zu machen. Das offensichtliche Problem dabei ist, dass es passieren kann, dass etwas auf dem Bild die gleiche Farbe hat wie der Rand (genau das gleiche), was es so aussehen lässt, als wäre die Grenze breiter als es wirklich ist. Deshalb solltest du mehr Punkte nehmen.

Wenn Sie etwas Code gezeigt haben, würde ich gerne die Antwort erweitern.

    
Igor Ralic 06.06.2013, 16:05
quelle