नीचे दिया गया कोड है और मैंने प्रत्येक फ़िल्टर को क्यों लागू किया है इसके पीछे तर्क है। मैंने इन कार्यों और सेटिंग्स पर बहुत से परीक्षण किए हैं, लेकिन आप अभी भी छवियों के अपने सेट के लिए इन सेटिंग्स को अनुकूलित करने के लिए कुछ परीक्षण चलाना चाहते हैं।
मैं IMagick का उपयोग किया है (ImageMagick के लिए पीएचपी आवरण) जब निम्न छवि की गणना के काम करने के लिए जिम्मेदार बताते हैं:
$Image = new Imagick($image_path);
$height = $Image->getImageHeight();
$width = $Image->getImageWidth();
$histogram = $Image->getImageHistogram();
$num_colors = $image->getImageColors();
ऊंचाई चौड़ाई अनुपात को
छनन छवियों से चौड़ाई अनुपात की ऊंचाई जंक के एक बड़े प्रतिशत को समाप्त करती है। अपने फ़िल्टर को 1: 1 पर सेट करने के करीब, यह फ़िल्टर बेहतर काम करता है, लेकिन आप बहुत अच्छी छवियों को भी फ़िल्टर करना शुरू कर देंगे।
// max height to width ratio we allow on images before we junk them
$max_size_ratio = 3;
if($size_ratio > $max_size_ratio)
throw new Exception("image height to width ratio exceeded max of $max_size_ratio");
रंग
के बहुत सारे 32 रंग नीचे
छनन छवियां आम तौर पर केवल कबाड़ छवियों, हालांकि, मैं भी खो हटाता की संख्या: यह सबसे अधिक मूल्यवान फिल्टर मैं आवेदन किया है में से एक है काले और सफेद आरेख और चित्र।
// min number of colors allowed before junking
$min_colors = 32;
if($num_colors < $min_colors)
throw new Exception("image had less than $min_colors colors");
मिन ऊंचाई और चौड़ाई
छनन छवियों एक निरपेक्ष न्यूनतम ऊंचाई पर आधारित है और चौड़ाई है कि दोनों आयामों में थोड़ी बड़ी मूल्य है कि कम से कम एक आयाम में मदद मिली गुजरना होगा और साथ ही गुजरना होगा कुछ जंक फ़िल्टर करें।
// min height and width in pixels both dimensions must meet
$min_height_single = 50;
$min_width_single = 50;
if(
$width < $min_width_single
OR $height < $min_height_single
)
throw new Exception("height or width were smaller than absolute minimum");
// min height and width in pixels at least one dimension must meet
$min_height = 75;
$min_width = 75;
if(
$width < $min_width
&& $height < $min_height
)
throw new Exception("height and width were both smaller than minimum combo");
छवि रंग Entropy छवि हिस्टोग्राम
का उपयोग कर अंत में, मैं छवि रंग एन्ट्रापी गणना अपने सिस्टम में हर छवि के लिए (के रूप में अपने जवाब में @Jason ने सुझाव दिया)। जब मैं प्रदर्शित करने के लिए छवियों का चयन कर रहा हूं, तो मैं आम तौर पर उन्हें इस एंट्रॉपी द्वारा अवरोही क्रम में क्रमबद्ध करने का आदेश देता हूं। एंट्रॉपी जितना अधिक होगा, उतना अधिक संभावना है कि एक छवि एक वास्तविक चीज की तस्वीर हो, एक ग्राफिक बनाम।
उच्च शैली ग्राफिक्स महान रंग गहराई और रंग भिन्नता की वजह से उच्च entropies हो जाते हैं: इस विधि के साथ तीन प्रमुख समस्याएं हैं।
फोटोग्राफ जिन्हें ठोस पृष्ठभूमि और स्टूडियो पृष्ठभूमि के लिए फ़ोटोशॉप किया गया है, वे प्रभावी ठोस रंग की वजह से कम entropies होते हैं।
यह मेरे सेट, छवियों, रंग गहराई इत्यादि में छवियों के बीच व्यापक भिन्नता के कारण एक पूर्ण फ़िल्टर के रूप में अच्छी तरह से काम नहीं करता है, हालांकि यह बेहद उपयोगी है, हालांकि, सबसे अच्छी छवि चुनने में है मेरे पूरे सेट के भीतर एक छोटा सबसेट। एक उदाहरण यह होगा कि कौन सी छवि एक वेबपृष्ठ पर मिली सभी छवियों में से प्राथमिक छवि के रूप में प्रदर्शित होगी।
यहाँ समारोह मैं छवि एन्ट्रापी गणना करने के लिए उपयोग करते हैं:
function set_image_entropy()
{
// create Imagick object and get image data
$Image = new Imagick($this->path);
$histogram = $Image->getImageHistogram();
$height = $Image->getImageHeight();
$width = $Image->getImageWidth();
$num_pixels = $height * $width;
// calculate entropy for each color in the image
foreach($histogram as $color)
{
$color_count = $color->getColorCount();
$color_percentage = $color_count/$num_pixels;
$entropies[] = $color_percentage * log($color_percentage, 2);
}
// calculate total image color entropy
$entropy = (-1) * array_sum($entropies);
return $entropy;
}
आप जी.डी. पुस्तकालय इस्तेमाल कर सकते हैं कच्चे छवि डेटा की प्रक्रिया, और किनारों, छवि समानता जैसी चीजों के लिए जाँच करने के लिए सक्षम होने के लिए और अन्य बातें। मैं कुछ और सटीक पोस्ट करूंगा, लेकिन इस समय php.net मेरे लिए नीचे प्रतीत होता है। मैंने वॉटरमार्क डालने से पहले जीडी का उपयोग किया है और जैसे, यह थोड़ा जटिल है, लेकिन आप इसके साथ बहुत कुछ भी कर सकते हैं। –
'exif' की जांच के बारे में कैसे? - http://php.net/manual/en/book.exif.php – ajreal