2013-07-03 62 views
6

我想通過傳遞另一個圖像作爲蒙版來掩蓋圖像。我能夠掩蓋圖像,但生成的圖像看起來不太好。它邊界交錯。IOS:屏蔽圖像保持視網膜比例因子帳戶

我猜這個問題與視網膜圖形有關。對兩個圖像中的刻度屬性是不同的,因爲:

  1. 從中我要掩蔽的圖像具有刻度值1。這通常圖像的分辨率高於1000×1000個像素大。
  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

我在2013年7月3日提出這個問題,第一個答案是1月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(); 

對我很好。

編輯

OR

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

你可以做

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