gpt4 book ai didi

iphone - UIGraphicsBeginImageContextWithOptions 和 UIImageJPEGRepresentation 不能很好地协同工作

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:25 28 4
gpt4 key购买 nike

所以我有这段代码来创建一个 UIImage:

UIGraphicsBeginImageContextWithOptions(border.frame.size, YES, 0);
[border.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *thumbnailImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

此时,图像上的尺寸是正确的,80x100。

然后它运行这段代码:

NSData *fullImageData = UIImageJPEGRepresentation(image, 1.0f);

并且图像的 NSData 返回尺寸为 160x200 的图像 - 是应有尺寸的两倍。

很明显,原因是这条线:

UIGraphicsBeginImageContextWithOptions(border.frame.size, YES, 0);

末尾的 0 是比例,因为它是 0,所以它是设备比例因子。我保持这种方式以保持清晰的图像。然而,当我将图像设置为 1 时,尽管图像保持其应有的大小,但它并没有以视网膜质量出现。我想要做的是保持视网膜质量,同时保持合适的大小。有办法做到这一点吗?

最佳答案

在调用 UIImageJPEGRepresentation 之前尝试调整 UIImage 的大小

- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize {
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height));
CGImageRef imageRef = image.CGImage;

UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();

// Set the quality level to use when rescaling
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height);

CGContextConcatCTM(context, flipVertical);
// Draw into the context; this scales the image
CGContextDrawImage(context, newRect, imageRef);

// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];

CGImageRelease(newImageRef);
UIGraphicsEndImageContext();

return newImage;
}

if([UIScreen mainScreen].scale > 1)
{
thumbnailImage = [self thumbnailImage newSize:CGSizeMake(thumbnailImage.size.width/[UIScreen mainScreen].scale, thumbnailImage.size.height/[UIScreen mainScreen].scale)];
}

关于iphone - UIGraphicsBeginImageContextWithOptions 和 UIImageJPEGRepresentation 不能很好地协同工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6976351/

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