原比例改变图片大小

本文介绍了一个Swift函数,用于按比例缩放UIImage对象,确保图片在指定的最大尺寸内绘制,同时保持原有的宽高比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就是根据需要按照原来的样子重绘图片 

上代码:xcode 7.3.1

  /**

     保持图片比例根据设置的大小重绘图片 更改图片内存大小并不改变图片样子

     

     - parameter image:        要修改的图片

     - parameter maxDimension: 包含图片的矩形区域最长的边长

     

     - returns: 缩放后的图片

     注:这边利用图片放大缩小其宽高比是不变的 来重绘图形

     */

    func scaleImage(image:UIImage,maxDimension:CGFloat) -> UIImage{

        /// 预设正方形区域 下面会根据图片大小调整

        var scaleSize:CGSize = CGSize.init(width: maxDimension, height: maxDimension)

        /// 图片短边与长边的比例

        var scaleFactor:CGFloat = 0

        /// 原图的长宽

        let imageW = image.size.width

        let imageH = image.size.height

        

        if imageW > imageH

        {//宽大于高的情况

            //1.高宽比

            scaleFactor = imageH / imageW

            //2.将长的一边设为划定区域的边长

            scaleSize.width = maxDimension

            //3.利用高宽比不变的原理 求出较短的边的长度

            scaleSize.height = scaleFactor * maxDimension

        }

        else

        {

            //宽小于高

            //原理同上

            scaleFactor = imageW / imageH

            scaleSize.height = maxDimension

            scaleSize.width = maxDimension * scaleFactor

        }

        //获取上下文环境

        UIGraphicsBeginImageContext(scaleSize)

        //重绘图片区域

        image.drawInRect(CGRect.init(x: 0, y: 0, width: scaleSize.width, height: scaleSize.height))

        //获取新图片

        let scaleImage = UIGraphicsGetImageFromCurrentImageContext()

        //关闭上下文

        UIGraphicsEndImageContext()

        

        return scaleImage

    }


使用方法:调用onload=AutoResizeImage()即可: <img src="./sample_pic.jpg" border="0" width="0" height="0" onload="AutoResizeImage(300,600,this)" /> 注意设置width="0" height="0" 也可onload="AutoResizeImage(0,250,this)"或onload="AutoResizeImage(250,0,this)" ,注意体会。 以下为使用示例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>最新javascript自动按比例显示图片,按比例压缩图片显示</title> <script language="javascript" src="./resizepic.js"></script> </head> <body> <br /> 图显示(534 X 800)<br /> onload="AutoResizeImage(0,0,this)<br /> <a href="./sample_pic.jpg" target="_blank"><img src="./sample_pic.jpg" border="0" width="0" height="0" onload="AutoResizeImage(0,0,this)" alt="534 X 800"/></a><br/><br /> 1.按宽度250压缩,不限制高度 按比例压缩<br /> onload="AutoResizeImage(250,0,this)"<br /> <a href="http://www.toyi.cc" target="_blank"><img src="./sample_pic.jpg" border="0" width="0" height="0" onload="AutoResizeImage(250,0,this)" alt="250 X 374"/></a><br /><br /> 2.按高度250压缩,不限制宽度 按比例压缩<br /> onload="AutoResizeImage(0,250,this)"<br /> <a href="http://www.toyi.cc" target="_blank"><img src="./sample_pic.jpg" border="0" width="0" height="0" onload="AutoResizeImage(0,250,this)" alt="166 X 250"/></a><br /><br /> 3.按高度250宽度250 按比例压缩<br /> onload="AutoResizeImage(250,250,this)"<br /> <a href="http://www.toyi.cc" target="_blank"><img src="./sample_pic.jpg" border="0" width="0" height="0" onload="AutoResizeImage(250,250,this)" alt="200 X 300"/></a><br /><br /> 4.高宽不等比例压缩 (400 X 512),此时高度不变,会自动按高度的比例压缩。<br /> onload="AutoResizeImage(400,512,this)"<br /> <a href="http://www.toyi.cc" target="_blank"><img src="./sample_pic.jpg" border="0" width="0" height="0" onload="AutoResizeImage(400,512,this)" alt="341 X 512"/></a><br /><br /> 5.高宽不等比例压缩 (300 X 600),此时宽度不变,会自动按宽度的比例压缩。<br /> onload="AutoResizeImage(300,600,this)"<br /> <a href="http://www.toyi.cc" target="_blank"><img src="./sample_pic.jpg" border="0" width="0" height="0" onload="AutoResizeImage(300,600,this)" alt="300 X 449"/></a><br /><br /> 6.如果图片本来的高度和宽度小于压缩的最大高度和宽度,则不会拉大显示图片(按图显示)<br /> 图444 x 207,压缩为 500 x 600,将保持图显示<br /> onload="AutoResizeImage(500,600,this)"<br /> <a href="http://www.toyi.cc" target="_blank"><img src="http://p.blog.youkuaiyun.com/images/p_blog_youkuaiyun.com/feng_sundy/242776/o_20070410_b7409cd284a0f799a357uePcEFa6ty0X.jpg" border="0" width="0" height="0" onload="AutoResizeImage(500,600,this)" alt="444 X 207"/></a><br /><br /> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值