How to smoothen the edges of a UIImageView in iOs [duplicate]

南笙酒味 提交于 2019-12-21 23:31:32

问题


Possible Duplicate:
Any quick and dirty anti-aliasing techniques for a rotated UIImageView?

I wanted to change the angle of an UIImageView in my iPhone and app i used the following code:

previewImg.transform = CGAffineTransformMakeRotation(atan2(y2-y1,x2-x1));

and I got it working and the image is below.

In the image, the edges of the image is not smooth. Is there any way to smoothen the edges?


回答1:


This has been asked before, check this post here, Any quick and dirty anti-aliasing techniques for a rotated UIImageView?

With that said, the optimal solution would be to create a 1px transparent border around your image.

UPDATE: Here's a helper method to add a transparent border to a UIImage, referenced from here: http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

- (UIImage *)transparentBorderImage:(NSUInteger)borderSize {
// If the image does not have an alpha layer, add one
UIImage *image = [self imageWithAlpha];

CGRect newRect = CGRectMake(0, 0, image.size.width + borderSize * 2, image.size.height + borderSize * 2);

// Build a context that's the same dimensions as the new size
CGContextRef bitmap = CGBitmapContextCreate(NULL,
                                            newRect.size.width,
                                            newRect.size.height,
                                            CGImageGetBitsPerComponent(self.CGImage),
                                            0,
                                            CGImageGetColorSpace(self.CGImage),
                                            CGImageGetBitmapInfo(self.CGImage));

// Draw the image in the center of the context, leaving a gap around the edges
CGRect imageLocation = CGRectMake(borderSize, borderSize, image.size.width, image.size.height);
CGContextDrawImage(bitmap, imageLocation, self.CGImage);
CGImageRef borderImageRef = CGBitmapContextCreateImage(bitmap);

// Create a mask to make the border transparent, and combine it with the image
CGImageRef maskImageRef = [self newBorderMask:borderSize size:newRect.size];
CGImageRef transparentBorderImageRef = CGImageCreateWithMask(borderImageRef, maskImageRef);
UIImage *transparentBorderImage = [UIImage imageWithCGImage:transparentBorderImageRef];

// Clean up
CGContextRelease(bitmap);
CGImageRelease(borderImageRef);
CGImageRelease(maskImageRef);
CGImageRelease(transparentBorderImageRef);

return transparentBorderImage;
}


来源:https://stackoverflow.com/questions/10978847/how-to-smoothen-the-edges-of-a-uiimageview-in-ios

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!