UIImage 大小(以像素为单位)

Posted

技术标签:

【中文标题】UIImage 大小(以像素为单位)【英文标题】:UIImage size in pixels 【发布时间】:2016-02-03 20:26:40 【问题描述】:

如果我只是将 image.size 与 image.scale 相乘,我可以获得 UIImage 的像素大小吗?是不是和这样做一样:

   guard let cgImage = image.CGImage else
        return nil
    
    let width = CGImageGetWidth(cgImage)
    let height = CGImageGetHeight(cgImage)

【问题讨论】:

【参考方案1】:

是的。

CGImageGetWidthCGImageGetHeight 将返回与 image.size * image.scale 返回相同的大小(以像素为单位)。

【讨论】:

Swift 5:CGImage.witdthCGImage.height【参考方案2】:

你可以,但它不一样与 cgImage.width x cgImage.height(你给的 CG 函数的新名称)。 cgImage 至少不知道一些可能已经旋转或翻转原始图像的 EXIF 标志。您可以在https://github.com/recurser/exif-orientation-examples 看到图像 Portrait_5.jpg 到 Portrait_8.jpg 的差异。 image.size.height * image.scale 给出 1800,但 cgImage.height 给出 1200(实际上是宽度)。

【讨论】:

那么,它相同的方向?即,在最坏的情况下,宽度和高度是翻转的? 是的。您可以想象一些 CGImage 也不知道的 exif“缩放”标志,但我不相信存在。【参考方案3】:
extension UIImage 
    func imageSizeInPixel() -> CGSize 
        let heightInPoints = size.height
        let heightInPixels = heightInPoints * scale

        let widthInPoints = size.width
        let widthInPixels = widthInPoints * scale

        return CGSize(width: widthInPixels, height: heightInPixels)
    

【讨论】:

以上是关于UIImage 大小(以像素为单位)的主要内容,如果未能解决你的问题,请参考以下文章

对 UIImage 进行像素化会返回具有不同大小的 UIImage

将 UIImage 转换为 CGImage 以获取像素颜色

iPhone 编程:如何使 UIImageView 中的 UIImage 以实际大小显示?

iOS中的像素和点是啥?

UIImage 调整大小

使用 CGContext 调整 UIImage 的大小会使我的图像变软,像素密度错误