我有一个显示相框(边框)的资源(.png文件) 此.png文件的大小为100x100px,边框宽度为10px。
我的问题:
如何在不破坏边框宽度的情况下,使用不同的尺寸从此图像创建另一个UIImage?
问题:
当我尝试使用CGContextDrawImage
从原始图像中绘制新图像时,我得到一个新尺寸的新图像,但我的边框比例是毁了。
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newWidth, newHeight));
CGImageRef imageRef = //... the image
// Build a context that's the same dimensions as the new size
CGContextRef bitmap = CGBitmapContextCreate(NULL,
newRect.size.width,
newRect.size.height,
CGImageGetBitsPerComponent(imageRef),
0,
CGImageGetColorSpace(imageRef),
CGImageGetBitmapInfo(imageRef));
// Set the quality level to use when rescaling
CGContextSetInterpolationQuality(bitmap, kCGInterpolationHigh);
// Draw into the context; this scales the image
CGContextDrawImage(bitmap, newRect, imageRef);
// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(bitmap);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
// Clean up
CGContextRelease(bitmap);
CGImageRelease(newImageRef);
例如,当我尝试创建800x100p的图像尺寸时,我得到的图像顶部和底部边框非常薄。
我需要的是边框将保持相同的宽度
*注意
使用resizableImageWithCapInsets:
不会帮助我,因为我需要一个新尺寸的新图像来保存在光盘上。
答案 0 :(得分:1)
您可以使用resizableImageWithCapInsets:
UIImage *img = [UIImage imageNamed:@"myResource"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(10,10,10,10)];
我从未在CGContextDrawImage中使用过这种方法,但它应该有用。