2009-08-12 11 views
5

J'ai quelques images JPG. Certains d'entre eux peuvent avoir une bordure noire sur un ou plusieurs côtés, et je voudrais les enlever. La bordure noire peut ne pas contourner l'image réelle - certains peuvent seulement avoir la bordure en bas (avec l'image réelle en haut), tandis que d'autres peuvent être centrés (ce qui signifie des bordures noires sur deux côtés, mais pas connectées). Pire, les images sont compressées en JPG, elles ne sont donc plus exactement 0,0,0 noires. Dans un programme Paint, j'utiliserais simplement l'outil Magic Wand avec une tolérance faible, mais je dois le faire en C# sur ASP.net, et je ne sais pas quelle est la meilleure façon de le faire. est.Suppression de la bordure noire autour d'une image

Dois-je «scanner» chaque ligne et ensuite chaque colonne (deux boucles for-imbriquées) pour trouver les zones noires? Cela semble un peu stupide à faire, performance et CPU-Load-sage. Ou est-ce que GDI + a déjà un outil de baguette magique? Les images ne sont pas très grandes (474 ​​x 474 pixels maximum) et mises en cache par la suite, mais je dois maintenir la charge du serveur aussi faible que possible. Des indices sur ce que serait la façon la moins stupide de le faire?

Répondre

4

Il semble que pour chaque bord, vous pouvez faire quelque chose comme ceci:

for each edge: 
    for (i = 0; ; i++) { 
     compute average pixel value along edge row/column + i 
     if (average value > threshold) 
       break; 
    } 
    crop image 
+0

Cette approche semble une force brute de bits (deux pour-boucles), mais il est étonnamment rapide (moins de 1 milliseconde par image). Merci pour l'idée avec la valeur de couleur moyenne. –

+1

La triste vérité avec le traitement d'image est, au moins à un niveau inférieur, vous devez parcourir tous les pixels d'intérêt. Aussi, soyez un peu prudent avec cette méthode si les utilisateurs peuvent télécharger principalement des images noires. Peut-être définir une limite supérieure sur la taille de la bordure autorisée. – Eric

Questions connexes