किसी को पता है इस स्क्रीन के रूप में उदाहरण के लिए एक और UIImageघटाना एक और आईओएस से एक छवि
से एक UIImage घटाना बनाने का तरीका:
प्रतिक्रिया के लिए धन्यवाद!
किसी को पता है इस स्क्रीन के रूप में उदाहरण के लिए एक और UIImageघटाना एक और आईओएस से एक छवि
से एक UIImage घटाना बनाने का तरीका:
प्रतिक्रिया के लिए धन्यवाद!
किसी छवि को घटाने का क्या अर्थ है? दिए गए नमूना छवि में से एक लाल ऑपरेशन दिखाता है। आइए हम कहें कि इमेज बी से इमेज को घटाए जाने का मतलब बी में प्रत्येक पिक्सेल को सेट करना है जो एक पिक्सेल को पारदर्शी में छेड़छाड़ करता है। घटाव करने के लिए, हम वास्तव में क्या कर रहे हैं छवि छवि के विपरीत में छवि बी मास्किंग है। इसलिए, छवि के अल्फा चैनल से एक छवि मास्क बनाने के लिए एक अच्छा दृष्टिकोण होगा, फिर इसे बी पर लागू करें। मुखौटा बनाने के लिए आप ऐसा कुछ करेंगे:
// get access to the image bytes
CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
// create a buffer to hold the mask values
size_t width = CGImageGetWidth(image.CGImage);
size_t height = CGImageGetHeight(image.CGImage);
uint8_t *maskData = malloc(width * height);
// iterate over the pixel data, reading the alpha value
uint8_t *alpha = (uint8_t *)CFDataGetBytePtr(pixelData) + 3;
uint8_t *mask = maskData;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
*mask = *alpha;
mask++;
alpha += 4; // skip to the next pixel
}
}
// create the mask image from the buffer
CGDataProviderRef maskProvider = CGDataProviderCreateWithData(NULL, maskData, width * height, NULL);
CGImageRef maskImage = CGImageMaskCreate(width, height, 8, 8, width, maskProvider, NULL, false);
// cleanup
CFRelease(pixelData);
CFRelease(maskProvider);
free(maskData);
whew। फिर, छवि बी मुखौटा करने के लिए, आपको बस इतना करना है:
CGImageRef subtractedImage = CGImageCreateWithMask(b.CGImage, maskImage);
हे प्रतिष्ठा।
उन परिणामों को प्राप्त करने के लिए, पहली छवि को खींचते समय दूसरी छवि को मुखौटा के रूप में उपयोग करें। इस तरह के चित्र के लिए, आपको कोर ग्राफिक्स, ए.के.ए. क्वार्ट्ज 2 डी का उपयोग करने की आवश्यकता होगी। क्वार्ट्ज 2 डी प्रोग्रामिंग गाइड में Bitmap Images and Image Masks नामक एक अनुभाग है जो आपको जो कुछ जानने की आवश्यकता है उसे बताना चाहिए।
आप UIImage ऑब्जेक्ट्स के बारे में पूछ रहे हैं, लेकिन कोर ग्राफिक्स का उपयोग करने के लिए आपको CGImages की आवश्यकता होगी। यह कोई समस्या नहीं है - UIImage CGImage
प्रॉपर्टी प्रदान करता है जो आपको आसानी से आवश्यक डेटा प्राप्त करने देता है।
मेरा मानना है कि आप kCGBlendModeDestinationOut
मिश्रण मोड का उपयोग करके इसे पूरा कर सकते हैं। एक नया संदर्भ बनाएं, अपनी पृष्ठभूमि छवि खींचें, फिर इस मिश्रण मोड के साथ अग्रभूमि छवि बनाएं।
UIGraphicsBeginImageContextWithOptions(sourceImage.size, NO, sourceImage.scale)
[sourceImage drawAtPoint:CGPointZero];
[maskImage drawAtPoint:CGPointZero blendMode:kCGBlendModeDestinationOut alpha:1.0f];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
केविन Ballard के समाधान मेरे लिए काम किया! स्विफ्ट 3.x:
func subtract(source: UIImage, mask: UIImage) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(source.size, false, source.scale)
source.draw(at: CGPoint.zero)
mask.draw(at: CGPoint.zero, blendMode: .destinationOut, alpha: 1.0)
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return result
}
अच्छा उदाहरण - यह मेरे लिए काम है। धन्यवाद! –