ios UIImage缩放

将UIImage缩放到指定大小尺寸:服务器

- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{  

   // 建立一个bitmap的context  

    // 并把它设置成为当前正在使用的context  

   UIGraphicsBeginImageContext(size);  

   // 绘制改变大小的图片  

    [img drawInRect:CGRectMake(0, 0, size.width, size.height)];  

    // 从当前context中建立一个改变大小后的图片  

    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();  

    // 使当前的context出堆栈  

    UIGraphicsEndImageContext();  

   // 返回新的改变大小后的图片  

    return scaledImage;  

}

 

 

根据图片的大小等比例压缩返回图片ui

+(UIImage *)fitSmallImage:(UIImage *)image

{

  if (nil == image)

   {

       return nil;

   }

   if (image.size.width

   {

       return image;

    }

    CGSize size = [DSMDataConvert fitsize:image.size];

   UIGraphicsBeginImageContext(size);

    CGRect rect = CGRectMake(0, 0, size.width, size.height);

    [image drawInRect:rect];

    UIImage *newing = UIGraphicsGetImageFromCurrentImageContext();

   UIGraphicsEndImageContext();

    return newing;

}

+ (CGSize)fitsize:(CGSize)thisSize

{

    if(thisSize.width == 0 && thisSize.height ==0)

       return CGSizeMake(0, 0);

    CGFloat wscale = thisSize.width/IMAGE_MAX_SIZE_WIDTH;

    CGFloat hscale = thisSize.height/IMAGE_MAX_SIZE_GEIGHT;

    CGFloat scale = (wscale>hscale)?wscale:hscale;

    CGSize newSize = CGSizeMake(thisSize.width/scale, thisSize.height/scale);

    return newSize;

}

 

1. 用下面的方法选中你要压缩的图片,而后输出到sentencePic这个uiimageview中,你调用这个sentencepic发送到服务器就好了。

2. 设置压缩比例大小的是这个:imageFrame。你在viewdidload中,CGRect   imageFrame = sentencePic.frame; //其中sentencePic.frame是你想要截取图片的尺寸。自行设定this

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    
    UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];
    UIImage *sharkenImage = shrinkImage(chosenImage, imageFrame.size);
    sentencePic.image = sharkenImage;
    
    [picker dismissModalViewControllerAnimated:YES];
}



static UIImage *shrinkImage(UIImage *original, CGSize size){
    CGFloat scale = [UIScreen mainScreen].scale;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    
    CGContextRef context = CGBitmapContextCreate(nil, size.width *scale, size.height *scale, 8, 0, colorSpace, kCGImageAlphaPremultipliedFirst);//NULL
    CGContextDrawImage(context, CGRectMake(0, 0, size.width *scale, size.height *scale), original.CGImage);
    CGImageRef shrunken = CGBitmapContextCreateImage(context);
    UIImage *final = [UIImage imageWithCGImage:shrunken];
    CGContextRelease(context);
    CGImageRelease(shrunken);
    return final;
}
相关文章
相关标签/搜索