2010-01-22 13 views
5

मैं एक आयताकार छवि को गैर-आयताकार आकार में फसल करना चाहता हूं। मुझे एहसास है कि यदि आप इसे पूरी तरह शाब्दिक रूप से लेते हैं, तो यह संभव नहीं है। मैं छवि एक्स के साथ समाप्त करना चाहता हूं, एक पारदर्शी पृष्ठभूमि पर वाई आकार देने के लिए फसल।मैं एक आयताकार आकार में एक छवि को प्रोग्रामेटिक रूप से कैसे फसल करूं?

के उदाहरण है कि मैं इडाहो ध्वज की एक तस्वीर लेने और इडाहो के राज्य के आकार के काट-छांट करने के लिए करते हैं। मुझे लगता है मैं कुछ इस तरह करना होगा:

  1. एक छवि इडाहो के आकार के लिए अपारदर्शी पिक्सल, अन्य सभी स्थानों पारदर्शी पिक्सेल है कि
  2. पढ़ें बनाएं और इस इडाहो राज्य छवि
  3. के लिए बिटमैप किसी तरह का स्टोर इडाहो राज्य की छवि में प्रत्येक अपारदर्शी पिक्सेल स्थान के लिए, इडाहो राज्य झंडा छवि से इसी पिक्सेल कॉपी और एक खाली, पारदर्शी कैनवास

चरण 1 स्पष्ट रूप से मैन्युअल रूप से किया किया जाएगा पर रखें, लेकिन बाकी की जाएगी प्रोग्राम के। मुझे लगता है कि मेरे पास सामान्य रूप से सही विचार है लेकिन मुझे नहीं पता कि मैं विशिष्टताओं से कैसे संपर्क करूंगा। क्या कोई मुझे सही दिशा दिखा सकता है?

जहां तक ​​कार्यान्वयन प्रौद्योगिकी चला जाता है, मैं एक PHP पुरुष हूँ, इसलिए gdLibrary या कुछ और है कि PHP के साथ काम करता शायद मुझे जाने के लिए सबसे अच्छा तरीका है का उपयोग कर।

+0

आपको प्रश्न में php टैग जोड़ना चाहिए – wich

उत्तर

2

मुझे लगता है कि बस बिटमैस्क या अल्फा चैनल जोड़कर करना बहुत आसान होगा। उस स्थिति में आप अपने आकार की नकारात्मक मास्क छवि का उपयोग करेंगे और फिर इसे नियमित रूप से मुखौटा के रूप में नियमित रूप से लागू करें और फिर पारदर्शी प्रारूप में सहेजें। मैंने कभी भी जीडी या इमेजमैजिक के साथ ऐसा नहीं किया लेकिन मुझे लगता है कि जैरी के रूप में यह उपलब्ध है। http://about.phalacee.com/geek/creating-mask-layers-using-php-gd

2

कुछ करने के लिए इस सफेद उपयोग करने के लिए किया जाएगा की तरह (सभी 1) और काला हमेशा की तरह (सभी 0 की) पारदर्शी और अपारदर्शी के बजाय अपने रूपरेखा के लिए। फिर आप और उस छवि के साथ वह छवि जिसे आप फसल करने की कोशिश कर रहे हैं। नतीजा 0 है जहां रूपरेखा छवि 0 थी, और दूसरी छवि जहां रूपरेखा 1 थी।

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

आपके द्वारा उपयोग की जा रही लाइब्रेरी की क्षमताओं के आधार पर, एक अच्छा मौका है कि इस तरह की क्षमता सीधे उपलब्ध है। उदाहरण के लिए, विंडोज़ में MaskBlt फ़ंक्शन में यह क्षमता है।

1

PHP में का उपयोग कर ImageMagick शायद आपका सर्वश्रेष्ठ दांव है:

$source = IMagick("sourcefile"); 
$mask = IMagick("maskfile"); 
$mask->adaptiveResizeImage($source->getImageWidth(), $source->getImageHeight(), true); 
$source->compositeImage($mask, imagick::COMPOSITE_MULTIPLY, 0, 0); 
$source->writeImage("newfile"); 
$source->clear(); 
$source->destroy(); 

sourcefile के रूप में आप की तरह स्रोत चित्र होना चाहिए

Acutally यहाँ

एक ब्लॉग पोस्ट के लिए एक समान तो सवाल यह है कि मदद कर सकता है के रूप में है , मास्कफ़ाइल एक मुखौटा फ़ाइल होना चाहिए जिसमें अल्फा चैनल आपके इच्छित आकार के लिए सही ढंग से सेट हो।

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