zoukankan      html  css  js  c++  java
  • [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 }
  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/strengthen/p/10030174.html
Copyright © 2011-2022 走看看