美文网首页
iOS图片缩放

iOS图片缩放

作者: Penn_Xu | 来源:发表于2022-06-08 01:36 被阅读0次

1、直接使用UIKit提供的接口UIGraphicsImageRenderer

import UIKit

// #1
func resizedImage(at url: URL, for size: CGSize) -> UIImage? {
    guard let image = UIImage(contentsOfFile: url.path) else {
        return nil
    }

    let renderer = UIGraphicsImageRenderer(size: size)
    return renderer.image { (context) in
        image.draw(in: CGRect(origin: .zero, size: size))
    }
}

2、使用Core Graphics进行图片处理

import UIKit
import CoreGraphics

// #2
func resizedImage(at url: URL, for size: CGSize) -> UIImage? {
    guard let imageSource = CGImageSourceCreateWithURL(url as NSURL, nil),
        let image = CGImageSourceCreateImageAtIndex(imageSource, 0, nil)
    else {
        return nil
    }

    let context = CGContext(data: nil,
                            width: Int(size.width),
                            height: Int(size.height),
                            bitsPerComponent: image.bitsPerComponent,
                            bytesPerRow: image.bytesPerRow,
                            space: image.colorSpace ?? CGColorSpace(name: CGColorSpace.sRGB)!,
                            bitmapInfo: image.bitmapInfo.rawValue)
    context?.interpolationQuality = .high
    context?.draw(image, in: CGRect(origin: .zero, size: size))

    guard let scaledImage = context?.makeImage() else { return nil }

    return UIImage(cgImage: scaledImage)
}

3、使用Image I/O创建缩略图

import ImageIO

// #3
func resizedImage(at url: URL, for size: CGSize) -> UIImage? {
    let options: [CFString: Any] = [
        kCGImageSourceCreateThumbnailFromImageIfAbsent: true,
        kCGImageSourceCreateThumbnailWithTransform: true,
        kCGImageSourceShouldCacheImmediately: true,
        kCGImageSourceThumbnailMaxPixelSize: max(size.width, size.height)
    ]

    guard let imageSource = CGImageSourceCreateWithURL(url as NSURL, nil),
        let image = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options as CFDictionary)
    else {
        return nil
    }

    return UIImage(cgImage: image)
}

此外还可以使用Core ImagevImage框架进行处理

不过这两种方法目前并不主流,性能上来讲也不如前三者,iOS平台开发目前最建议使用的是UIGraphicsImageRenderer

相关文章

  • 在 iOS 开发中如何优雅地进行图片缩放?

    在 iOS 开发中如何优雅地进行图片缩放? 在 iOS 开发中如何优雅地进行图片缩放?

  • iOS 图片缩放

    按指定尺寸缩放图片 根据屏幕的宽高等比压缩图片

  • iOS图片缩放

    概述 UIButton里要用到一张图片,但是实际的图片尺寸偏大,因此要根据真机的尺寸更改图片大小 方法 参考 io...

  • iOS图片缩放

    利用UIScrollView实现图片的缩放,适合新手。不多说了,直接上代码。

  • iOS 图片缩放

    需求分析 在App的图片查看中常见有以下功能: 图片随用户手指的点击,会进行相应区域的缩放,虽然这个简单的功能十分...

  • ios 图片缩放

  • iOS图片缩放

    1、直接使用UIKit提供的接口UIGraphicsImageRenderer 2、使用Core Graphics...

  • flutter开发常见问题

    1.android获取图片上的二维码会对图片进行缩放处理,可能导致获取失败。要控制缩放比例 2.iOS14以上,使...

  • iOS scrollView缩放图片

    2019.2.27更新: 简化了代码,逻辑更加清晰 个人认为本文正确,优雅地实现了缩放图片。总体效果: 源码地址:...

  • cocos2d-x 优化

    一,IOS与图片内存在IOS上,图片会被自动缩放到2的N次方大小。比如一张10241025的图片,占用的内存与一张...

网友评论

      本文标题:iOS图片缩放

      本文链接:https://www.haomeiwen.com/subject/bxwymrtx.html