기존 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;
}
결과 이미지입니다 :
그림에 사용 된 프레임 이미지는 다음과 같습니다
가 여기 내 코드입니다 PNG에없는 픽셀을 보여주는 Photoshop의 프레임 이미지 스크린 샷
원본은 투명한 PNG입니다. 시뮬레이터에서 흰색은 나타나지 않습니다. – user717452
확실히 문제는 아닙니다. PHOTOSHOP에서 PNG를 열었고 맨 위의 메모와 제목을 제외하고는 투명하게 확대되었습니다. OP – user717452
@ user717452에서 이것을 보여주는 스크린 샷을 추가 할 것입니다. - 내 자신의 이미지로 코드를 실행했지만 설명하는 아티팩트를 경험하지 못했습니다. 나는 당신의 app 번들에 앉아 PNG 이미지를 두 번 확인하고 Photoshop에서 확인한 것과 같은지 확인하는 것이 좋습니다. 아마도 실제 이미지를 포함하도록 질문을 편집하여 설명하는 동작을 재현 할 수 있습니다. 우리가 행동을 재현 할 수있을 때까지, 우리는 당신을 도울 수 없습니다. 그리고 당신의 코드와 제 자신의 이미지로 시도한 것이 잘되었습니다. – Rob