gpt4 book ai didi

iphone - UIImage圆角

转载 作者:行者123 更新时间:2023-12-03 18:09:23 26 4
gpt4 key购买 nike

我尝试在 UIImage 上获得圆角,到目前为止我读到的,最简单的方法是使用 mask 图像。为此,我使用了 TheElements iPhone 示例中的代码和我找到的一些图像调整大小代码。我的问题是 resizedImage 始终为零,我没有发现错误...

- (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize
{
CGSize imageSize = [self size];
float width = imageSize.width;
float height = imageSize.height;

// scaleFactor will be the fraction that we'll
// use to adjust the size. For example, if we shrink
// an image by half, scaleFactor will be 0.5. the
// scaledWidth and scaledHeight will be the original,
// multiplied by the scaleFactor.
//
// IMPORTANT: the "targetHeight" is the size of the space
// we're drawing into. The "scaledHeight" is the height that
// the image actually is drawn at, once we take into
// account the ideal of maintaining proportions

float scaleFactor = 0.0;
float scaledWidth = targetSize.width;
float scaledHeight = targetSize.height;

CGPoint thumbnailPoint = CGPointMake(0,0);

// since not all images are square, we want to scale
// proportionately. To do this, we find the longest
// edge and use that as a guide.

if ( CGSizeEqualToSize(imageSize, targetSize) == NO )
{
// use the longeset edge as a guide. if the
// image is wider than tall, we'll figure out
// the scale factor by dividing it by the
// intended width. Otherwise, we'll use the
// height.

float widthFactor = targetSize.width / width;
float heightFactor = targetSize.height / height;

if ( widthFactor < heightFactor )
scaleFactor = widthFactor;
else
scaleFactor = heightFactor;

// ex: 500 * 0.5 = 250 (newWidth)

scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;

// center the thumbnail in the frame. if
// wider than tall, we need to adjust the
// vertical drawing point (y axis)

if ( widthFactor < heightFactor )
thumbnailPoint.y = (targetSize.height - scaledHeight) * 0.5;

else if ( widthFactor > heightFactor )
thumbnailPoint.x = (targetSize.width - scaledWidth) * 0.5;
}


CGContextRef mainViewContentContext;
CGColorSpaceRef colorSpace;

colorSpace = CGColorSpaceCreateDeviceRGB();

// create a bitmap graphics context the size of the image
mainViewContentContext = CGBitmapContextCreate (NULL, targetSize.width, targetSize.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedLast);

// free the rgb colorspace
CGColorSpaceRelease(colorSpace);

if (mainViewContentContext==NULL)
return NULL;

//CGContextSetFillColorWithColor(mainViewContentContext, [[UIColor whiteColor] CGColor]);
//CGContextFillRect(mainViewContentContext, CGRectMake(0, 0, targetSize.width, targetSize.height));

CGContextDrawImage(mainViewContentContext, CGRectMake(thumbnailPoint.x, thumbnailPoint.y, scaledWidth, scaledHeight), self.CGImage);

// Create CGImageRef of the main view bitmap content, and then
// release that bitmap context
CGImageRef mainViewContentBitmapContext = CGBitmapContextCreateImage(mainViewContentContext);
CGContextRelease(mainViewContentContext);

CGImageRef maskImage = [[UIImage imageNamed:@"Mask.png"] CGImage];

CGImageRef resizedImage = CGImageCreateWithMask(mainViewContentBitmapContext, maskImage);
CGImageRelease(mainViewContentBitmapContext);

// convert the finished resized image to a UIImage
UIImage *theImage = [UIImage imageWithCGImage:resizedImage];

// image is retained by the property setting above, so we can
// release the original
CGImageRelease(resizedImage);

// return the image
return theImage;
}

最佳答案

如果您使用 UIImageView 来显示图像,您只需执行以下操作:

imageView.layer.cornerRadius = 5.0;
imageView.layer.masksToBounds = YES;

并添加边框:

imageView.layer.borderColor = [UIColor lightGrayColor].CGColor;
imageView.layer.borderWidth = 1.0;

我相信您必须导入 <QuartzCore/QuartzCore.h>并链接到它以使上面的代码起作用。

关于iphone - UIImage圆角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/262156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com