我有一个显示相框(边框)的资源(.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:
不会帮助我,因为我需要一个新大小的新图像来保存在光盘上。