PHP

2012-11-26 22 views
12

में छवि अभिविन्यास पुनर्प्राप्त करें मैं PHP में छवि (जेपीईजी या पीएनजी) की छवि अभिविन्यास (परिदृश्य या चित्र) कैसे प्राप्त कर सकता हूं?PHP

मैंने एक PHP साइट बनाई जहां उपयोगकर्ता चित्र अपलोड कर सकते हैं। इससे पहले कि मैं उन्हें एक छोटे आकार में स्केल कर दूं, मैं जानना चाहता हूं कि छवि को उचित तरीके से स्केल करने के लिए कैसे उन्मुख है।

आपके उत्तर के लिए धन्यवाद!

+1

http://php.net /manual/en/imagick.getimageorientation.php –

+0

जो jpg/png चश्मे का हिस्सा नहीं है। वे सिर्फ पिक्सल के ग्रिड हैं। आप जांच सकते हैं कि छवि लम्बे से अधिक व्यापक है, लेकिन इसका मतलब बहुत अधिक नहीं है। EXIF डेटा में उन्मुखता डेटा होता है। –

उत्तर

29

मैं हमेशा इस किया है लागू किया जा सकता:

list($width, $height) = getimagesize('image.jpg'); 
if ($width > $height) { 
    // Landscape 
} else { 
    // Portrait or Square 
} 
0

सरल। बस चौड़ाई और ऊंचाई की जांच करें और उन्मुखीकरण प्राप्त करने के लिए उनकी तुलना करें। फिर तदनुसार आकार बदलें। वास्तव में सीधे आगे। आप कुछ इस तरह इस्तेमाल कर सकते हैं आप पहलू अनुपात बनाए रखने के लिए, लेकिन कुछ वर्ग बॉक्स में फिट कोशिश कर रहे हैं:

public static function fit_box($box = 200, $x = 100, $y = 100) 
{ 
    $scale = min($box/$x, $box/$y, 1); 
    return array(round($x * $scale, 0), round($y * $scale, 0)); 
} 
1

मैं अगर छवि चौड़ाई लैंडस्केप के लिए और अगर पोर्ट्रेट के लिए सीमा से लंबा है आप जांच कर सकता है लगता है लंबाई चौड़ाई से अधिक लंबी है।

आप इसे सरल IF/ELSE कथन के साथ कर सकते हैं।

तुम भी समारोह इस्तेमाल कर सकते हैं: Imagick::getImageOrientation

http://php.net/manual/en/imagick.getimageorientation.php

0

मैं एक सामान्यीकृत तरह एल्गोरिथ्म का आकार छोटा करने का उपयोग करें। ..

function calculateSize($width, $height){ 

      if($width <= maxSize && $height <= maxSize){ 
       $ratio = 1; 
      } else if ($width > maxSize){ 
       $ratio = maxSize/$width; 
       } else{ 
        $ratio = maxSize/$height; 
        } 

     $thumbwidth = ($width * $ratio); 
     $thumbheight = ($height * $ratio); 
     } 

यहां अधिकतम आकार वह है जिसे मैंने ऊंचाई और चौड़ाई दोनों के लिए 120px की तरह शुरू किया है। । । ताकि थंबनेल उस आकार से अधिक न हो। । ..

यह मेरे लिए काम करता है जो लैंडस्केप या पोर्ट्रेट ओरिएंटेशन पर ध्यान दिए बिना है और आम तौर पर

6
list($width, $height) = getimagesize("path/to/your/image.jpg"); 

if($width > $height) 
    $orientation = "landscape"; 
else 
    $orientation = "portrait";