xcode 将 UIImage 分成两半?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10661291/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 00:22:01  来源:igfitidea点击:

Split UIImage in half?

iosxcodecocoa-touchipadxcode4.3

提问by Shredder2794

How would I go about splitting a UIImage In half(down the middle) so it would make two images?

我将如何将 UIImage 分成两半(中间),以便制作两个图像?

回答by xda1001

You can try this,

你可以试试这个

UIImage *image = [UIImage imageNamed:@"yourImage.png"];
CGImageRef tmpImgRef = image.CGImage;
CGImageRef topImgRef = CGImageCreateWithImageInRect(tmpImgRef, CGRectMake(0, 0, image.size.width, image.size.height / 2.0));
UIImage *topImage = [UIImage imageWithCGImage:topImgRef];
CGImageRelease(topImgRef);

CGImageRef bottomImgRef = CGImageCreateWithImageInRect(tmpImgRef, CGRectMake(0, image.size.height / 2.0,  image.size.width, image.size.height / 2.0));
UIImage *bottomImage = [UIImage imageWithCGImage:bottomImgRef];
CGImageRelease(bottomImgRef);

hope this can help you, :)

希望这可以帮到你, :)

回答by Durul Dalkanat

- (void)splitImage:(UIImage *)image
{
    CGFloat imgWidth = image.size.width/2;
    CGFloat imgheight = image.size.height;

    CGRect leftImgFrame = CGRectMake(0, 0, imgWidth, imgheight);
    CGRect rightImgFrame = CGRectMake(imgWidth, 0, imgWidth, imgheight);

    CGImageRef left = CGImageCreateWithImageInRect(image.CGImage, leftImgFrame);
    CGImageRef right = CGImageCreateWithImageInRect(image.CGImage, rightImgFrame);

    // These are the images we want!
    UIImage *leftImage = [UIImage imageWithCGImage:left];
    UIImage *rightImage = [UIImage imageWithCGImage:right];

    // Don't forget to free the memory!
    CGImageRelease(left);
    CGImageRelease(right);
}

回答by user3069232

iOS 11, swift 4.0 updated version https://stackoverflow.com/users/893872/durul-dalkanatwhich I think to be honest is the best :)

iOS 11,swift 4.0 更新版本https://stackoverflow.com/users/893872/durul-dalkanat我认为老实说是最好的:)

This splits an image into 4 parts

这将图像分成 4 部分

func splitImage(image2D: UIImage) -> [UIImage] {
    let imgWidth = image2D.size.width / 2
    let imgHeight = image2D.size.height / 2
    var imgImages:[UIImage] = []

    let leftHigh = CGRect(x: 0, y: 0, width: imgWidth, height: imgHeight)
    let rightHigh = CGRect(x: imgWidth, y: 0, width: imgHeight, height: imgHeight)
    let leftLow = CGRect(x: 0, y: imgHeight, width: imgWidth, height: imgHeight)
    let rightLow = CGRect(x: imgWidth, y: imgHeight, width: imgWidth, height: imgHeight)

    let leftQH = image2D.cgImage?.cropping(to:leftHigh)
    let rightHQ = image2D.cgImage?.cropping(to:rightHigh)
    let leftQL = image2D.cgImage?.cropping(to:leftLow)
    let rightQL = image2D.cgImage?.cropping(to:rightLow)

    imgImages.append(UIImage(cgImage: leftQH!))
    imgImages.append(UIImage(cgImage: rightHQ!))
    imgImages.append(UIImage(cgImage: leftQL!))
    imgImages.append(UIImage(cgImage: rightQL!))

    return imgImages
}