2009-08-12 21 views
5

मेरे पास कुछ जेपीजी छवियां हैं। उनमें से कुछ एक या अधिक पक्षों पर एक काला सीमा है, और मैं उन्हें हटाना चाहता हूं। काला सीमा वास्तविक छवि के चारों ओर नहीं जा सकती है - कुछ में केवल नीचे की सीमा हो सकती है (शीर्ष पर वास्तविक छवि के साथ), जबकि कुछ केंद्रित हो सकते हैं (जिसका अर्थ है कि दो तरफ काले सीमाएं, लेकिन कनेक्ट नहीं हैं)। इससे भी बदतर, छवियां जेपीजी संपीड़ित हैं, इसलिए वे अब 0,0,0 काले नहीं हो सकते हैं।किसी छवि के चारों ओर काली सीमा को हटाकर

एक पेंट प्रोग्राम में, मैं कम सहिष्णुता के साथ मैजिक वंड टूल का "बस" उपयोग करता हूं, लेकिन मुझे इसे एएसपीनेट पर सी # में करने की ज़रूरत है, और मुझे नहीं पता कि यह करने का सबसे अच्छा तरीका क्या है है।

क्या मुझे प्रत्येक पंक्ति को "स्कैन" करना चाहिए और फिर काला क्षेत्र खोजने के लिए प्रत्येक कॉलम (दो नेस्टेड फॉर-लूप) चाहिए? कुछ हद तक बेवकूफ लगता है, प्रदर्शन और सीपीयू-लोड-वार। या क्या जीडीआई + में कुछ जादू की छड़ी उपकरण पहले से ही बना है?

छवियां बड़ी नहीं हैं (474x474 पिक्सेल अधिकतम) और बाद में कैश की गई हैं, लेकिन मुझे सर्वर को जितना संभव हो उतना लोड रखना होगा।

कोई संकेत यह है कि यह करने का कम से कम बेवकूफ तरीका क्या होगा?

उत्तर

4

ऐसा लगता है कि आप इस तरह से कुछ कर सकते हैं प्रत्येक बढ़त के लिए लगता है:

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

यही दृष्टिकोण (के लिए-छोरों दो) एक सा जानवर बल लगता है, लेकिन यह आश्चर्यजनक रूप से तेजी से होता है (चित्र के अनुसार कम से कम 1 मिलीसेकंड)। औसत रंग मान के साथ विचार के लिए धन्यवाद। –

+1

छवि प्रसंस्करण के साथ दुखद सत्य कम से कम निचले स्तर पर है, आपको ब्याज के सभी पिक्सेल पर फिर से चलना होगा। साथ ही, यदि उपयोगकर्ता अधिकतर काले छवियों को अपलोड कर सकते हैं, तो इस विधि से थोड़ा सावधान रहें। शायद अनुमत सीमा आकार पर ऊपरी सीमा निर्धारित करें। – Eric

संबंधित मुद्दे