2011-05-06 13 views
7

मैं यह पता लगाने में सक्षम कैसे होगा कि एक छवि खाली है (केवल एक, मनमानी रंग या एक gif के साथ, यादृच्छिक मनमानी रंगों के फ्रेम) PHP और/या imagemagick का उपयोग कर?PHP के साथ रिक्त जेनरेट की गई छवियों का पता लगाना?

मुझे लगता है कि यह है कि क्या मैं कोशिश करने जा रहा हूँ है: http://www.php.net/manual/en/function.imagecolorat.php#97957

+0

जटिल लगता है .. शुभकामनाएँ! – drudge

उत्तर

2

http://www.php.net/manual/en/function.imagecolorstotal.php आप एक छवि में रंग की राशि देता है। हम्म, मेरे डेमो में यह काम नहीं कर रहा है, क्षमा करें :(मैंने जो छवि बनाई है (पूरी तरह से लाल, 20x20 पिक्सेल) पीएनजी के लिए 0 रंग और जीआईएफ के लिए 3 रंग देता है।

ठीक: http://www.dynamicdrive.com/forums/showpost.php?p=161187&postcount=2 दूसरे टुकड़े को देखें । कोड के यहाँ परीक्षण किया गया:। http://www.pendemo.nl/totalcolors.php

+0

"एक छवि पैलेट में रंगों की संख्या देता है।" शब्द * पैलेट * पर ध्यान दें। – Svish

+0

हाँ, कम से कम यह एक कदम करीब है, हाहा ;-) –

+0

ठीक है, काम करने वाले कोड का एक टुकड़ा मिला। ऊपर पोस्ट किए गए अंतिम अनुच्छेद को देखें। पीएनजी के लिए काम करता है। –

0

प्रत्येक टाइल के लिए वर्बोज़ आँकड़ों से मानक विचलन प्राप्त मानक विचलन 0 है, तो छवि 'रंग की संख्या' एक रंग है

माना जाता है, होगा। यह भी करें; 1.

-format विकल्प का उपयोग करें: http://www.imagemagick.org/script/escape.php

1

आप imagecolorat का उपयोग कर PHP के अंदर छवि जाँच कर सकते हैं (यह धीमा हो सकता है, लेकिन यह काम करता है):

function isPngValidButBlank($filename) { 
    $img = imagecreatefrompng($filename); 
    if(!$img) 
    return false; 
    $width = imagesx($img); 
    $height = imagesy($img); 
    if(!$width || !$height) 
    return false; 
    $firstcolor = imagecolorat($img, 0, 0); 
    for($i = 0; $i < $width; $i++) { 
    for($j = 0; $j < $height; $j++) { 
     $color = imagecolorat($img, $i, $j); 
     if($color != $firstcolor) 
     return false; 
    } 
    } 
    return true; 
} 
2

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

खोजने की संभावना nonblank पिक्सेल = 1 - ई^(- एन * पी)

जहां एन नमूने की संख्या है, और पी नॉनब्लैंक होने की उम्मीद पिक्सल का प्रतिशत है। n के लिए समाधान की कोशिश करने के नमूनों की उपयुक्त संख्या प्राप्त करने के लिए:

एन = -log (1 - x)/पी

जहां x वांछित संभावना है और लॉग प्राकृतिक लॉग है। उदाहरण के लिए, यदि आप उचित रूप से सुनिश्चित हैं कि छवि का 0.1% गैरब्लैंक होना चाहिए, और आप कम से कम एक गैरब्लैंक पिक्सेल,

n = -log (1-9999)/.001 = 9210 नमूने की आवश्यकता है।

प्रत्येक पिक्सेल की जांच करने से बहुत तेज़। 100% सुनिश्चित होने के लिए, यदि आप नमूनाकरण नहीं पाते हैं तो आप हमेशा वापस जा सकते हैं और उन सभी को जांच सकते हैं।

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