2011-11-04 11 views
10

का उपयोग करके गुरुत्वाकर्षण के साथ केंद्र फसल I Imagick PHP apis (Imagick का कमांड लाइन संस्करण नहीं) का उपयोग करके फसल और छवि को केंद्र में देखना चाहता हूं।इमेजिक और PHP

अनिवार्य रूप से मैं एपीआई का उपयोग करके कमांड लाइन के माध्यम से संभव है जो करना चाहता हूं। यहां कमांड लाइन के माध्यम से एक उदाहरण दिया गया है: http://www.imagemagick.org/Usage/crop/#crop_gravity

यहां मैं जो कर रहा हूं (काम नहीं कर रहा हूं)। यह हमेशा स्रोत के ऊपरी बाएं कोने को फसल करता है:

 $this->imagickObj->setGravity(\Imagick::GRAVITY_CENTER); 
     $this->imagickObj->cropImage(300,250,0,0); 
     $this->imagickObj->setImagePage(0, 0, 0, 0); 

सेट ग्रेविटी फसल से पहले छवि पर क्यों लागू नहीं हो रहा है? http://www.php.net/manual/en/function.imagick-setgravity.php कहना है कि वह वस्तु (इस मामले में एकल छवि) पर लागू होना चाहिए ...

उत्तर

3

ऐसा लगता है कि समर्थन नहीं है की तरह है, यहाँ है कि कैसे मैं यह कर समाप्त हो गया: https://gist.github.com/1364489

+0

आप इन गणनाओं को कैसे परिभाषित करते हैं? – j0k

0

ImageMagick वस्तु की cropImage() विधि के 3 और 4 तर्क फसल के ऊपरी-बाएं कोने परिभाषित कर रहे हैं। या तो उन्हें null (और setGravity() विधि का उपयोग करें) के रूप में पारित करने का प्रयास करें, या आपको वास्तव में गणना करनी होगी कि फसल कहां होनी चाहिए और उन संख्याओं को cropImage() विधि में पॉप करें (और setGravity() से परेशान न करें)।

इसके लायक होने के लिए, मैंने PHP का उपयोग करके छविमैगिक के आसपास बहुत सी कोडिंग की है, और Imagemagick एक्सटेंशन के भयानक दस्तावेज़ीकरण के कारण, मैंने बहुत सारी कमांड कमांड लाइन कॉल करने का सहारा लिया।

+0

धन्यवाद। शून्य, शून्य काम नहीं करता है। मैं गणित कर सकता हूं, लेकिन यदि संभव हो तो निर्मित किया गया लाभ उठाना पसंद करेंगे। मैं कारणों के समूह के लिए सीएलआई जाने से बचना चाहता हूं, जिनमें से एक प्रदर्शन है (मैं एक छवि मैनिपुलेशन सेवा लिख ​​रहा हूं जिसका काफी उपयोग किया जाएगा)। – rynop

+0

मैंने जो मुख्य सेवा लिखी है वह सीएलआई का उपयोग करता है, बिना किसी हिचकी के दिन एक दिन में दो हजार छवियों को संसाधित करता है, और यह इंटेल कोर i5 760 पर 4 जीबी रैम के साथ लिनक्स पर चलता है जो कुछ वेबसाइटों पर भी कार्य करता है। – Crontab

+0

धन्यवाद। मैंने गणित करने का फैसला किया क्योंकि इसमें केवल कुछ मिनट लग गए। इस प्रश्न को कुछ दिनों के लिए खुलासा करने के लिए यह देखने के लिए कि क्या कोई अंतर्निहित गुरुत्वाकर्षण का उपयोग करने के तरीके के बारे में जानता है। – rynop

12

इसके मूल व्यक्ति जो प्रश्न पूछा लेकिन भावी आगंतुकों के लिए, सही समाधान

bool Imagick::cropThumbnailImage (int $width , int $height) है के लिए बहुत देर हो चुकी

देर से उत्तर के लिए खेद है, लेकिन मैं यहां केवल 30 मिनट पहले फंस गया और पहले Google परिणाम ने मुझे यहां रीडायरेक्ट किया। उम्मीद है कि दूसरों के साथ ऐसा नहीं होगा।

+0

क्या यह हमेशा केंद्र फसल करता है? क्या होगा यदि मैं गुरुत्वाकर्षण को बदलना चाहता हूं? – rynop

+0

हां, यह हमेशा केंद्र गुरुत्वाकर्षण के साथ फसल। वास्तव में यह ऊंचाई या चौड़ाई से मेल खाने के लिए पहली स्केल छवि और फिर किसी भी छवि के थंबनेल बनाने के लिए केंद्र से फसल। यह वही तर्क है जो थंबनेल बनाने के लिए एफबी, ट्विटर, गूगल और कई अन्य साइटों द्वारा उपयोग किया जाता है। यदि आपको गुरुत्वाकर्षण को बदलने की आवश्यकता है, तो http://php.net/manual/en/imagick पर परिभाषित अनुसार 'बूल इमेजिक :: फसल इमेज (int $ width, int $ ऊंचाई, int $ x, int $ y)' का उपयोग करें। cropimage.php –

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