1
我在現有的UIImage周圍添加一個圖片框(帶有透明背景的圖片),並將其全部保存爲一張圖片。在模擬器上,一切看起來都很棒。但是,在設備上,它會在框架圖像的某些區域周圍添加一些白色像素。這是我的代碼:iOS周圍的白色像素使用CIFilter的圖像
- (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中。
原來是一個透明的PNG。在模擬器中,白色不會出現。 – user717452
絕對不是問題。只需在PHOTOSHOP中打開PNG並放大以確認透明,除了筆記和標題在頂部。將在OP – user717452
@ user717452中添加一個屏幕截圖 - 我用自己的圖片運行了您的代碼,但沒有遇到您描述的工件。我建議您仔細檢查坐在應用程序包中的PNG圖像,並確保它與您在Photoshop中驗證的圖像一樣。也許編輯問題以包含實際圖像,以便我們可以重現您描述的行爲。在我們重現行爲之前,我們無法幫助您。我的代碼和我自己的圖像嘗試工作正常。 – Rob