iOS自适应网络图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youyou_56/article/details/82968475

加载网络的图片的时候,经常碰到后台配置的图片不规则,那么就会出现图片变形,被压缩的,这是为了美观,通常被要求截取图片的中间区域,那么办法可以如下:

-(UIImage *)ct_imageFromImage:(UIImage *)image inRect:(CGRect)rect{

CGSize size=image.size;

float a = rect.size.width/rect.size.height;
float X = 0;
float Y = 0;
float W = 0;
float H = 0;

if (size.width>size.height) {
    
    H= size.height;
    W= H*a;
    Y=0;
    X=  (size.width - W)/2;
    
    if ((size.width - size.height*a)/2<0) {
        
        W = size.width;
        H = size.width/a;
        Y= (size.height-H)/2;
        X=0;
    }
    
}else{
    
    W= size.width;
    H= W/a;
    X=0;
    Y=  (size.height - H)/2;
    
    if ((size.height - size.width/a)/2<0) {
        
        H= size.height;
        W = size.height*a;
        X= (size.width-W)/2;
        Y=0;
    }
    
}

//把像 素rect 转化为 点rect(如无转化则按原图像素取部分图片)
//    CGFloat scale = [UIScreen mainScreen].scale;
CGRect dianRect = CGRectMake(X, Y, W, H);//CGRectMake(x, y, w, h);

//截取部分图片并生成新图片
CGImageRef sourceImageRef = [image CGImage];
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, dianRect);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];

CGImageRelease(sourceImageRef);


return newImage;

}

调用:
(加载网络图片)
[imageView sd_setImageWithURL:[NSURL URLWithString:liveDict[@“liveImage”]] placeholderImage:[UIImage imageNamed:@“i”] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {

    imageView.image=  [weakSelf ct_imageFromImage:image inRect:imageView.frame];

}];

如果只是本地图片
UIImage *image1 = [UIImage imageNamed:@“imageName”];
imageView.image= [weakSelf ct_imageFromImage:image1 inRect:imageView.frame];

猜你喜欢

转载自blog.csdn.net/youyou_56/article/details/82968475