簡體   English   中英

iOS Image周圍的白色像素使用CIFilter

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM