2016-02-04 8 views
6

मेरे पास दो छवियां हैं (दोनों मानचित्र) एक एक सादा मानचित्र है और एक नक्शा है जिस पर पिन हैं।परिणाम छोड़ने के लिए दो छवियों को घटाएं - PHP

छवि एक

Image One

छवि दो

Image Two

मैं उन्हें एक दूसरे के रूप में तो मैं बस पिंस के साथ छोड़ दिया हूँ से घटाना कोशिश कर रहा हूँ एक पारदर्शी पीएनजी।

मुझे इसके साथ कुछ सफलता मिली है और पिन को अपनी छवि के रूप में प्राप्त करने में कामयाब रहा है, समस्या यह है कि रंग बिल्कुल सही नहीं हैं (छवि 3 देखें)।

छवि तीन

Image Three

मैं Imagick उपयोग कर रहा हूँ यह करने के लिए और मेरे नीचे दिए गए कोड

<?php 

// load in the base image into Imagick 
$imageOne = new Imagick('images/base-map.png'); 
$imageTwo = new Imagick('images/pins/location-7.png'); 

$imageOne->compositeImage($imageTwo, Imagick::COMPOSITE_DIFFERENCE, 0, 0); 
$imageOne->paintTransparentImage($imageOne->getImagePixelColor(0, 0), 0, 5000); 

header('Content-Type: image/png'); 

echo $imageOne; 

किसी को भी पता है कि मैं कैसे साफ कर सकते हैं/इस बनाने के लिए tweak करता है रंग मूल छवि से मेल खाते हैं?

धन्यवाद!

+0

पहली बार मैं यह प्रश्न देख रहा हूं - * छवि घटाव *। –

उत्तर

1

आप पिन से भी घटाते हैं, यही कारण है कि वे अलग दिखते हैं।

मुझे यकीन है कि कैसे Imagick में इस पर अमल करने के लिए नहीं है, लेकिन क्या आप क्या करना चाहते है: पिन के साथ नक्शे से

घटाना नक्शा, एक मुखौटा बनाने के तो (पिन पिक्सल 1, पूर्व नक्शा पिक्सल 0 डाल) इसे पिन के साथ मानचित्र के साथ गुणा करें। फिर आपको पिन के साथ छोड़ दिया जाता है।

यह मदद कर सकता है: http://www.imagemagick.org/script/fx.php

1

मैं इस मास्किंग तकनीक पिग्लेट ने उल्लेख किया है और इस post से और साथ घूम-योद्धा और मदद से

में का उपयोग कर काम करने के लिए प्राप्त करने के लिए प्रबंधित किया है बाकी मामले किसी को भी इसकी आवश्यकता कोड यहाँ है:

<?php 

$base = new Imagick('images/base-map.png'); // blank map 
$mask = $base; // copy of this to create the mask with 
$imageTwo = new Imagick('images/pins/location-7.png'); // image with pins on it 

// create the mask 
$mask->compositeImage($imageTwo, Imagick::COMPOSITE_DIFFERENCE, 0, 0); 
$mask->paintTransparentImage($mask->getImagePixelColor(0, 0), 0, 5000); 
$mask->compositeImage($mask, Imagick::COMPOSITE_DIFFERENCE, 0, 0); 

// remove the mask from the image with pins 
$imageTwo->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA); 
$imageTwo->paintTransparentImage('#000', 0, 5000); 

header('Content-Type: image/png'); 
echo $imageTwo; 

मुखौटा तो mask

०१२३५१६४१०६१ तरह लग रहा है

और इतने

enter image description here

उम्मीद है कि इस किसी और जो इसे जरूरत में मदद मिलेगी की तरह अंतिम आउटपुट!

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