[英]White pixels around iOS Image using CIFilter
我在現有的UIImage周圍添加了一個相框(帶透明背景的圖像),並將其全部保存為一個圖像。 在模擬器上,一切看起來都很棒。 但是在設備上,它會在幀圖像的某些區域周圍添加一些白色像素。 這是我的代碼:
- (void)applyFilter {
NSLog(@"Running");
UIImage *borderImage = [UIImage imageNamed:@"IMG_8055.PNG"];
NSData *dataFromImage = UIImageJPEGRepresentation(self.imgView.image, 1);
CIImage *beginImage= [CIImage imageWithData:dataFromImage];
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *border =[CIImage imageWithData:UIImagePNGRepresentation(borderImage)];
border = [border imageByApplyingTransform:CGAffineTransformMakeScale(beginImage.extent.size.width/border.extent.size.width, beginImage.extent.size.height/border.extent.size.height)];
CIFilter *filter= [CIFilter filterWithName:@"CISourceOverCompositing"]; //@"CISoftLightBlendMode"];
[filter setDefaults];
[filter setValue:border forKey:@"inputImage"];
[filter setValue:beginImage forKey:@"inputBackgroundImage"];
CIImage *outputImage = [filter valueForKey:@"outputImage"];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *newImg = [UIImage imageWithCGImage:cgimg];
self.imgView.image = newImg;
}
這是結果圖像:
圖片中使用的幀圖像如下所示:
這是photoshop中幀圖像的屏幕截圖,顯示PNG中不存在這些像素。
問題是,如果你看你的圖像,那些緊鄰音符的像素顯然是不透明的。 如果你注意到,那些出現在最終圖像中的白色像素不僅僅是偶然的像素,而是出現在方塊中。
這些平方像素噪聲是JPEG偽像的標志。 很難說是什么導致了這個問題,因為您在此問題中添加的圖像是JPEG(不支持透明度)。 我想你必須有這個背景的PNG版本? 您可能需要與我們分享以確認此診斷。
但最重要的是,您需要仔細檢查原始圖像和那些看似白噪聲的像素的透明度。 確保在創建/操作這些圖像時避免使用JPEG文件格式,因為它會丟失透明度信息並引入工件。 PNG文件通常更安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.