繁体   English   中英

将UIImage调整为100%并裁剪

[英]Resize UIImage to 100% and crop

我有一个风景UIImage ,我想裁剪为900x900大小。

我不希望将其拉伸-我希望将其缩放到100%-图像将被缩放以适合900x900,并且图像的超出范围的部分将被裁剪。

我已经试过这段代码:

UIGraphicsBeginImageContextWithOptions(newSize, true, UIScreen.main.scale);
image.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))

let newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
return newImage!

但是,它所做的只是拉伸图像以适合900x900尺寸,这不是我想要的。

知道我该怎么办吗?

谢谢

如果我正确地阅读了您的问题,则可以通过定制UIImageView的contentMode属性(将图像附加到该属性)来实现所需的功能。

在这里查看开发人员参考: https : //developer.apple.com/reference/uikit/uiimageview

但是,要回答您的问题,请将图像放置在UIImageView的中心而不拉伸它,请使用contentMode.center; 缩放它以适合视图,但使用.aspectFit保持长宽比; 并拉伸以适合图像视图,请使用.scaleToFill。 链接中还介绍了其他选项。

如果图像尺寸大于900,则可以从图像中心裁剪到900像素。

这是代码:

func centerCropImage(image1:UIImage) -> UIImage
{

    let modifiedSize:CGFloat = 900.0;
    // Center the crop area

    let clippedRect = CGRect(x: ((image.size.width - modifiedSize)/2), y: ((image.size.height - modifiedSize)/2), width: modifiedSize, height: modifiedSize);


    // Crop logic
    let imageRef:CGImage = image.cgImage!.cropping(to: clippedRect)!;

    //(image as! CGImage).cropping(to: clippedRect)!;
    let croppedImage = UIImage(cgImage: imageRef);

    return croppedImage;
}

希望能帮助到你

快乐的编码...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM