Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: PHP Bild automatisch zuschneiden mit PHP
AUTOR BEITRAG
phoeniks

RANG Godlike

#1 - 28.01 16:49

Ich würde gerne ein Bild (jpg/tiff/DinA4) so zuschneiden,
dass nur der bedruckte Teil im neuen Bild landet.
Also eine Funktion, wie man sie von Scannern kennt,
die erkennen wo Inhalt ist und wo nur weisse Fläche.

Das Bild entsteht mit Hilfe eines Kopierers, der zwar scannen
aber nicht automatisch zuschneiden kann. Die Fläche ist somit
immer A4 - der zu erwartende Inhalt ca. die Größe eines Din-Lang
Briefumschlags.


Bin für alle Denkanstöße/Links/Ideen dankbar....
horst

RANG Prophet of Clanintern

#2 - 28.01 19:50

Ist es denn außerum weiß?

Dann würde ich von oben links Pixel für Pixel nach nem Farbwert suchen, der den Schwellenwert überschreitet. Gleichzeitig das ganze noch von unten rechts.

Damit spannt sich dein Rechteck auf, mit dem du nen "COPY" in ein neues Bild machen kannst.

Geht sicher auch eleganter, aber das ist die einfachste Lösung, die mir spontan einfällt.
h¥pertex

RANG Deckschrubber

#3 - 28.01 20:08

Naja, aber es wird wohl nicht reinweiss sein. Und das Blatt ist ja auch noch weiss, also wirst du deinen ersten Punkt erst beim ersten Buchstaben bekommen, was dann ein bisschen komisch aussehen könnte.
Da würde ich eher schaun, ob der Umschlag immer an der selben stelle liegt, und dann einmalig die Pixel zählen, und immer an der Stelle ausschneiden. (+ ein bisschen Versatz).
horst

RANG Prophet of Clanintern

#4 - 28.01 20:23

@reinweiss: daher der schwellenwert.

@nur text: kann sein, vom anfangspost bin ich von einem bild (z.B. Postkarte) oder einem anderen rechteckigen format ausgegangen, so dass ein rechteck immer deutlich sichtbar anders im großen bild liegt. wenn es sich nur um text handelt, muss man mit einem anderen algorithmus an die sache ran, um es komplett zu automatisieren.

und er soll beim ersten treffer schon abbrechen, so dass er ObenLinks und UntenRechts als koordinaten erhält. wenn der schwellenwert ausreichend groß und deutlich ist, kann er von da halt +/- ein paar pixel schön schneiden.
h¥pertex

RANG Deckschrubber

#5 - 28.01 20:43

Oh, sry, hab den Schwellenwert überlesen.
@nur Text: Davon bin ich irgendwie ausgegangen, weil er das mit dem Briefumschlag geschrieben hat... Wobei er ja eigtl von einem Bild, und nur ca. der Grösse eines Umschlages spricht.

Aber das mit dem ersten Treffer funktioniert nicht, denn wenn der Text oben weiter rechts beginnt, und du von links her kommst, dann machst du das Rechteck zu klein.
code:

                                  blablabla
text1
text2text2usw

Wenn du jetzt von links kommst, dann schneides du den ganzen text1 & text2 weg.
Also müsste man eher das ganze Bild durchlaufen, und die 4 äussersten Koordinaten bestimmen.
horst

RANG Prophet of Clanintern

#6 - 28.01 20:58

wenn es text ist ... ja ... ich geh noch immer von einem "bild im bild" aus, dass man recht einfach erkennt.

aber gehen wir mal von deinem fall aus: denk dir 4 hilslinien. eine startet von oben, bis ein pixel gefunden wird, die zweite von links, die dritte von unten und die letzte von rechts. dann hast du auch ein rechteck, dass dir deinen inhalt GENAU einrahmt.

besser?

es kommt halt drauf an, was für inhalt man erkennen will :-)
h¥pertex

RANG Deckschrubber

#7 - 28.01 22:01

Ja, genau das meinte ich auch mit den 4 äussersten Koordinaten ;)

Auf jeden Fall hat #1 jetzt für jeden Fall einen Lösungsansatz ;)
phoeniks

RANG Godlike

#8 - 29.01 21:08

Danke für eure Antworten.
Jetzt hab ich wirklich schon einmal einen Lösungsansatz.

Es handelt sich übrigens um eine in Graustufen gescannte Bestellkarte bzw. um gefaxte Bestellkarten von daher ist es eher Text, da der Rand der Karte nicht immer eindeutig zu erkennen ist.

Ich werde es mal mit der Methode von rechts/links/oben/unten nach einem dunkleren Pixel suchen probieren.

Danke nochmals!
horst

RANG Prophet of Clanintern

#9 - 29.01 21:16

Wir sind gespannt auf die Lösung :-) Bitte mit Beispielbild posten :-)