2013-07-03 7 views
6

में रेटिना स्केल कारक रखने वाली छवि को मास्क करना, मैं मास्क के रूप में दूसरी छवि को पास करके एक छवि मास्क करना चाहता हूं। मैं छवि को मुखौटा करने में सक्षम हूं लेकिन परिणामस्वरूप छवि अच्छी नहीं लग रही है। यह सीमाओं पर घिरा हुआ है।आईओएस: खाता

मुझे लगता है कि समस्या रेटिना ग्राफिक्स से संबंधित है। दो छवियों के लिए स्केल प्रॉपर्टी अलग-अलग हैं:

  1. जिस छवि से मैं मास्क करना चाहता हूं वह एक पैमाने मान है 1. इस छवि में आमतौर पर 1000x1000 पिक्सेल से अधिक संकल्प होता है।
  2. छवि जिसके अनुसार मैं परिणामस्वरूप छवि (केवल काले और सफेद रंग वाले छवि) को स्केल मान 2 चाहता हूं। यह छवि आमतौर पर 300x300 पिक्सेल रिज़ॉल्यूशन का है।

जिसके परिणामस्वरूप छवि 1.

के पैमाने महत्व है कोड मैं का उपयोग कर रहा है:

+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

CGImageRef maskRef = maskImage.CGImage; 

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
            CGImageGetHeight(maskRef), 
            CGImageGetBitsPerComponent(maskRef), 
            CGImageGetBitsPerPixel(maskRef), 
            CGImageGetBytesPerRow(maskRef), 
            CGImageGetDataProvider(maskRef), NULL, false); 


CGImageRef masked = CGImageCreateWithMask([image CGImage], mask); 
CGImageRelease(mask); 
UIImage *maskedImage = [UIImage imageWithCGImage:masked ]; 
CGImageRelease(masked); 
return maskedImage; 
} 

मैं एक नकाबपोश छवि है जो रेटिना पैमाने इस प्रकार कैसे मिल सकता है?

+0

आपने एक उत्तर मान्य करता है, तो यह आपको मदद की पर विचार करना चाहिए कर सकते हैं। – kokluch

+0

मैंने 3 जुलाई, 2013 को इस प्रश्न से पूछा और पहला जवाब 8 जनवरी को था। उस समय के बीच मैं विभिन्न परियोजनाओं में स्थानांतरित हो गया हूं और मैंने जांच नहीं की है कि क्या उत्तर मदद करता है या नहीं और यदि मुझे यकीन नहीं है तो मैं कैसे स्वीकार कर सकता हूं कोई उत्तर। मैं सिर्फ सवाल बंद करना चाहता हूं लेकिन यह नहीं जानता कि यह कैसे करें। –

+0

खोजने के लिए मुश्किल नहीं है ... – kokluch

उत्तर

5

मुझे एक ही समस्या थी। ऐसा लगता है कि यह रेखा स्केल कारक को अनदेखा करती है।

UIImage *maskedImage = [UIImage imageWithCGImage:masked]; 

तो आपको छवि स्वयं को आकर्षित करनी चाहिए। इसे निम्नलिखित द्वारा बदलें:

UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0); 

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height); 

CGContextDrawImage(context, rect, masked); 

UIImage * maskedImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

मेरे द्वारा ठीक काम करता है।

संपादित

या

UIImage * maskedImage = [UIImage imageWithCGImage:masked 
              scale:[[UIScreen mainScreen] scale] 
             orientation:UIImageOrientationUp]; 
4

आप

UIImage * maskedImage = [UIImage imageWithCGImage:masked scale:[[UIScreen mainScreen] scale] orientation:UIImageOrientationUp]; 
संबंधित मुद्दे