下载前获取图片尺寸

时间:2015-05-27 00:49:38

标签: ios swift

在从URL下载(或部分下载)图像之前,有没有办法检查图像尺寸(即高度和宽度)?我已经找到了获取图像大小的方法,但这没有用。

基本上我想在下载图像之前计算UITableView行的正确高度。这可能吗?

4 个答案:

答案 0 :(得分:0)

您可以部分下载图像数据,然后从中提取图像大小。您将必须获取正在使用的图像格式的数据结构并在某种程度上解析它。如果你能够进行低级编码,那就有可能而不是那么难。

答案 1 :(得分:0)

创建HeightConstraint的IBOutlet 例如,这里的图片与服务器的比例为16:9 这将自动调整所有屏幕的高度。 ImageView ContentMode是AspectFit

override func viewDidLoad() {
cnstHeight.constant = (self.view.frame.width/16)*9
}

答案 2 :(得分:-1)

您可以通过访问其标题详细信息来执行此操作 在 Swift 3.0 下面的代码可以帮助您,

 if let imageSource = CGImageSourceCreateWithURL(url! as CFURL, nil) {
     if let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as Dictionary? {
          let pixelWidth = imageProperties[kCGImagePropertyPixelWidth] as! Int
          let pixelHeight = imageProperties[kCGImagePropertyPixelHeight] as! Int
          print("the image width is: \(pixelWidth)")
          print("the image height is: \(pixelHeight)")
       }
   }

答案 3 :(得分:-2)

快速4 方法:

func getImageDimensions(from url: URL) -> (width: Int, height: Int) {
        if let imageSource = CGImageSourceCreateWithURL(url as CFURL, nil) {
            if let imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, nil) as Dictionary? {
                let pixelWidth = imageProperties[kCGImagePropertyPixelWidth] as! Int
                let pixelHeight = imageProperties[kCGImagePropertyPixelHeight] as! Int
                return (pixelWidth, pixelHeight)
            }
        }
        return (0, 0)
    }