HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 制作UIImage的正方形裁剪图像以拉伸图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当尝试执行UI Image的中心裁剪时,我得到以下结果(左边是640 * 1136处的原始图像,右边是适合320 * 320的正方形UIImageView的裁剪图像):

转向:

我对比率元素进行了相当多的修改,以便能够正确地检测要修剪的数量:使用图像的较短边,构建基于short_side / width_of_desired_rect的比率,但@L_944_3@种情况下似乎不起作用.帮助赞赏!

- (UIImage *)squareImageWithImage:(UIImage *)image scaledToSize:(CGSizE)newSize {
    double ratio;
    double delta;
    CGPoint offset;

    //make a new square size,that is the resized imaged width
    CGSize sz = CGSizeMake(newSize.width,newSize.width);

    //figure out if the picture is landscape or porTrait,then
    //calculate scale factor and offset
    if (image.size.width > image.size.height) {
        ratio = newSize.width / image.size.width;
        delta = (ratio*image.size.width - ratio*image.size.height);
        offset = CGPointMake(delta/2,0);
    } else {
        ratio = newSize.width / image.size.height;
        delta = (ratio*image.size.height - ratio*image.size.width);
        offset = CGPointMake(0,delta/2);
    }

    //make the final clipping rect based on the calculated values
    CGRect clipRect = CGRectMake(-offset.x,-offset.y,(ratio * image.size.width) + delta,(ratio * image.size.height) + delta);

    //for reTina consideration
    if ([[UIScreen mainScreen] respondsToSELEctor:@SELEctor(scalE)]) {
        UIGraphicsBeginImageContextWithOptions(sz,YES,0.0);
    } else {
        UIGraphicsBeginImageContext(sz);
    }
    UIRectClip(clipRect);
    [image drawInRect:clipRect];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

解决方法

试试这个:
- (UIImage *)squareImageFromImage:(UIImage *)image scaledToSize:(CGFloat)newSize {
    CGAffineTransform scaleTransform;
    CGPoint origin;

    if (image.size.width > image.size.height) {
        CGFloat scaleRatio = newSize / image.size.height;
        scaleTransform = CGAffineTransformMakeScale(scaleRatio,scaleRatio);

        origin = CGPointMake(-(image.size.width - image.size.height) / 2.0f,0);
    } else {
        CGFloat scaleRatio = newSize / image.size.width;
        scaleTransform = CGAffineTransformMakeScale(scaleRatio,scaleRatio);

        origin = CGPointMake(0,-(image.size.height - image.size.width) / 2.0f);
    }

    CGSize size = CGSizeMake(newSize,newSizE);
    if ([[UIScreen mainScreen] respondsToSELEctor:@SELEctor(scalE)]) {
        UIGraphicsBeginImageContextWithOptions(size,0);
    } else {
        UIGraphicsBeginImageContext(sizE);
    }

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextConcatCTM(context,scaleTransform);

    [image drawAtPoint:origin];

    image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;
}

大佬总结

以上是大佬教程为你收集整理的ios – 制作UIImage的正方形裁剪图像以拉伸图像全部内容,希望文章能够帮你解决ios – 制作UIImage的正方形裁剪图像以拉伸图像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。