使用drawInRect调整图像大小,同时保持纵横比不变,例如“缩放纵横比填充”?

越冬

我想使用drawInRect方法调整图像的大小,但我也想保持正确的宽高比,同时完全填充给定的帧(如.ScaleAspectFill对UIViewContentMode所做的那样)。有人对此有一个准备好的答案吗?

这是我的代码(非常简单...):

func scaled100Image() -> UIImage {
    let newSize = CGSize(width: 100, height: 100)
    UIGraphicsBeginImageContext(newSize)
    self.pictures[0].drawInRect(CGRect(x: 0, y: 0, width: 100, height: 100))
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return newImage
}
越冬

好的,所以没有现成的答案...我为UIImage写了一个快速扩展,如果需要,可以随时使用。

这里是:

extension UIImage {
    func drawInRectAspectFill(rect: CGRect) {
        let targetSize = rect.size
        if targetSize == CGSizeZero {
            return self.drawInRect(rect)
        }
        let widthRatio    = targetSize.width  / self.size.width
        let heightRatio   = targetSize.height / self.size.height
        let scalingFactor = max(widthRatio, heightRatio)
        let newSize = CGSize(width:  self.size.width  * scalingFactor,
                             height: self.size.height * scalingFactor)
        UIGraphicsBeginImageContext(targetSize)
        let origin = CGPoint(x: (targetSize.width  - newSize.width)  / 2, 
                             y: (targetSize.height - newSize.height) / 2)
        self.drawInRect(CGRect(origin: origin, size: newSize))
        let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        scaledImage.drawInRect(rect)
    }
}

因此,在上面的示例中,您可以像这样使用它:

self.pictures[0].drawInRectAspectFill(CGRect(x: 0, y: 0, width: 100, height: 100))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

FPDF:调整图像大小保持纵横比

来自分类Dev

PHP 使用纵横比调整图像大小

来自分类Dev

如何使图像可缩放并同时保持其纵横比?

来自分类Dev

如何在保持其纵横比的同时调整PictureBox的大小

来自分类Dev

如何在保持其纵横比的同时调整PictureBox的大小

来自分类Dev

保持具有百分比宽度的图像的纵横比并在保持纵横比的同时调整其他 div 的大小

来自分类Dev

如何使用 DataGridViewImageColumn 使用缩放显示图像并保持纵横比?

来自分类Dev

yii2使用Imagine调整图像尺寸以保持纵横比

来自分类Dev

如何使用 jCrop 调整图像大小以适应所有纵横比?

来自分类Dev

纵横比根据图像的大小填充图像

来自分类Dev

NSImageView图像纵横比填充?

来自分类Dev

如何在 PHP 中保持纵横比的同时将图像调整为固定宽度和高度?

来自分类Dev

ImageMagick:调整图像大小(矩形到正方形);保持主要物体的纵横比

来自分类Dev

使用背景图像保持 div 的纵横比

来自分类Dev

Qt - 如何创建随窗口缩放并保持纵横比的图像?

来自分类Dev

缩放水平布局组的子布局元素,同时保持其纵横比

来自分类Dev

调整大小时的正交相机纵横比

来自分类Dev

背景图像以调整大小为中心,缩放比例保持不变

来自分类Dev

保持图像纵横比和 div 内

来自分类Dev

如何使图像在div中保持纵横比

来自分类Dev

使用Python调整图像大小,同时保持其比例

来自分类Dev

使用百分比填充技巧来保持纵横比会导致 CSS Grid 溢出

来自分类Dev

固定纵横比的图像裁剪

来自分类Dev

Wordpress 图像纵横比

来自分类Dev

在Xamarin Forms中顶部对齐纵横比填充的图像

来自分类Dev

永久改变画布图像的尺寸,而不是保持纵横比

来自分类Dev

纵横比未知的动态元素缩放

来自分类Dev

如何在保持其大小的同时放大缩放图像?

来自分类Dev

保持可扩展div的纵横比

Related 相关文章

  1. 1

    FPDF:调整图像大小保持纵横比

  2. 2

    PHP 使用纵横比调整图像大小

  3. 3

    如何使图像可缩放并同时保持其纵横比?

  4. 4

    如何在保持其纵横比的同时调整PictureBox的大小

  5. 5

    如何在保持其纵横比的同时调整PictureBox的大小

  6. 6

    保持具有百分比宽度的图像的纵横比并在保持纵横比的同时调整其他 div 的大小

  7. 7

    如何使用 DataGridViewImageColumn 使用缩放显示图像并保持纵横比?

  8. 8

    yii2使用Imagine调整图像尺寸以保持纵横比

  9. 9

    如何使用 jCrop 调整图像大小以适应所有纵横比?

  10. 10

    纵横比根据图像的大小填充图像

  11. 11

    NSImageView图像纵横比填充?

  12. 12

    如何在 PHP 中保持纵横比的同时将图像调整为固定宽度和高度?

  13. 13

    ImageMagick:调整图像大小(矩形到正方形);保持主要物体的纵横比

  14. 14

    使用背景图像保持 div 的纵横比

  15. 15

    Qt - 如何创建随窗口缩放并保持纵横比的图像?

  16. 16

    缩放水平布局组的子布局元素,同时保持其纵横比

  17. 17

    调整大小时的正交相机纵横比

  18. 18

    背景图像以调整大小为中心,缩放比例保持不变

  19. 19

    保持图像纵横比和 div 内

  20. 20

    如何使图像在div中保持纵横比

  21. 21

    使用Python调整图像大小,同时保持其比例

  22. 22

    使用百分比填充技巧来保持纵横比会导致 CSS Grid 溢出

  23. 23

    固定纵横比的图像裁剪

  24. 24

    Wordpress 图像纵横比

  25. 25

    在Xamarin Forms中顶部对齐纵横比填充的图像

  26. 26

    永久改变画布图像的尺寸,而不是保持纵横比

  27. 27

    纵横比未知的动态元素缩放

  28. 28

    如何在保持其大小的同时放大缩放图像?

  29. 29

    保持可扩展div的纵横比

热门标签

归档