美文网首页
处理下载后的图片不是正方形的问题

处理下载后的图片不是正方形的问题

作者: CRAZYBADAM | 来源:发表于2016-09-01 16:14 被阅读18次

    在 上面 调用SDWebImage 去请求图片

    [_hotelImage sd_setImageWithURL:[NSURL URLWithString:model.hotelLogo] completed:^(UIImage *image,NSError*error,SDImageCacheTypecacheType,NSURL*imageURL) {

    if(!image)

    {

    image = [UIImage imageNamed:@"placeholder_hotel_list"];

    }

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0), ^{

    UIImage*overlayImage = [self squareImageFromImage:image scaledToSize:kScreenWidth/2];

    dispatch_async(dispatch_get_main_queue(), ^{

    _hotelImage.image= overlayImage;

    });

    });

    }];

    /**

    *剪切图片为正方形

    *

    *@paramimage原始图片比如size大小为(400x200)pixels

    *@paramnewSize 正方形的size比如400pixels

    *

    *@return返回正方形图片(400x400)pixels

    */

    - (UIImage*)squareImageFromImage:(UIImage*)image scaledToSize:(CGFloat)newSize {

    CGAffineTransform scaleTransform;

    CGPoint origin;

    if (image.size.width> image.size.height) {

    //image原始高度为200,缩放image的高度为400pixels,所以缩放比率为2

    CGFloat scaleRatio = newSize / image.size.height;

    scaleTransform =CGAffineTransformMakeScale(scaleRatio, scaleRatio);

    //设置绘制原始图片的画笔坐标为CGPoint(-100, 0)pixels

    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);

    }

    CGSizesize =CGSizeMake(newSize, newSize);

    //创建画板为(400x400)pixels

    if ([[UIScreen mainScreen]respondsToSelector:@selector(scale)]) {

    UIGraphicsBeginImageContextWithOptions(size,YES,0);

    } else {

    UIGraphicsBeginImageContext(size);

    }

    CGContextRef context =UIGraphicsGetCurrentContext();

    //将image原始图片(400x200)pixels缩放为(800x400)pixels

    CGContextConcatCTM(context, scaleTransform);

    //origin也会从原始(-100, 0)缩放到(-200, 0)

    [image drawAtPoint:origin];

    //获取缩放后剪切的image图片

    image =UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;

    }

    相关文章

      网友评论

          本文标题:处理下载后的图片不是正方形的问题

          本文链接:https://www.haomeiwen.com/subject/gqycsttx.html