• [Xcode 实际操作]六、媒体与动画-(1)使用图形上下文按一定比例缩放图片


    目录:[Swift]Xcode实际操作

    本文将演示如何通过图形上下文,来实现图片缩放的功能.

    在项目导航区,打开视图控制器的代码文件【ViewController.swift】

     1 import UIKit
     2 
     3 class ViewController: UIViewController {
     4 
     5     override func viewDidLoad() {
     6         super.viewDidLoad()
     7         // Do any additional setup after loading the view, typically from a nib.
     8         
     9         //从项目资源文件中读取一张图片
    10         let image = UIImage(named: "Picture")
    11         //调用缩放图片的方法,将图片缩放至指定尺寸
    12         let scaledImage = scaleImage(image: image!, newSize: CGSize( 180, height: 180))
    13         
    14         //创建一个图像视图,并加载尺寸缩小后的图片
    15         let imageView = UIImageView(image: scaledImage)
    16         //接着设置图像视图的中心点坐标为(160,160)
    17         imageView.center = CGPoint(x: 160, y: 160)
    18         
    19         //将图像视图添加到当前视图控制器的根视图
    20         self.view.addSubview(imageView)
    21     }
    22     
    23     //首先创建一个方法,传递一个图像参数,和一个缩放比例参数,
    24     //实现将图像缩放至指定比例的功能
    25     func scaleImage(image:UIImage, newSize:CGSize)->UIImage
    26     {
    27         //获得源图像的指定的尺寸属性
    28         let imageSize = image.size
    29         //获得源图像的宽度数值
    30         let width = imageSize.width
    31         //获得源图像的高度数值
    32         let height = imageSize.height
    33         
    34         //计算图像新尺寸和旧尺寸的宽比例
    35         let widthFactor = newSize.width/width
    36         //计算图像新尺寸和旧尺寸的高比例
    37         let heightFactor = newSize.height/height
    38         //获取最小的哪个比例
    39         let scaleFactor = (widthFactor < heightFactor) ? widthFactor : heightFactor
    40         
    41         //计算图像新的宽度
    42         let scaledWidth = width * scaleFactor
    43          //计算图像新的高度
    44         let scaledHeight = height * scaleFactor
    45         //将新的款的和高度,构建成标准的尺寸对象
    46         let targetSize = CGSize( scaledWidth, height: scaledHeight)
    47         
    48         //创建绘图上下文环境
    49         UIGraphicsBeginImageContext(targetSize)
    50         //将图像对象,画入之前计算的新尺寸里,原点为(0,0,)
    51         image.draw(in: CGRect(x: 0, y: 0,  scaledWidth, height: scaledHeight))
    52         //获取上下文的内容,将内容写入到新的图像对象
    53         let newImage = UIGraphicsGetImageFromCurrentImageContext()
    54         
    55         //在方法的结尾,返回生成的新的图像对象
    56         return newImage!
    57     }
    58 
    59     override func didReceiveMemoryWarning() {
    60         super.didReceiveMemoryWarning()
    61         // Dispose of any resources that can be recreated.
    62     }
    63 }
  • 相关阅读:
    阻止事件冒泡
    移动端开发
    angular6 管道多参数传输 Pipe
    在div上添加小三角
    angular6 使用@Input() @Output()
    angular6 想要获取页面某些事件 如 点击 window宽高等等
    如何将项目添加到git上
    使用vue-cli 搭建element-admin后台
    bootstrap4 常用样式类名 (供自己参考)
    键盘按下 keyCode 的值
  • 原文地址:https://www.cnblogs.com/strengthen/p/10030174.html
Copyright © 2020-2023  润新知