拍照上传图片的压缩


#pragma mark - UIImagePickerController delegate
// 选择玩图片成功回调
- (
void )imagePickerController:( UIImagePickerController *)picker didFinishPickingMediaWithInfo:( NSDictionary < NSString *, id > *)info{
    [
HITAudioPlayerManagerInstacne startPalyAudioByFileName : @"bt_back" andType : @"wav" ];
    [picker
dismissViewControllerAnimated : YES completion : nil ];
   
if ( self . type == 1 ) {
       
if ([ self . delegate respondsToSelector : @selector (selectImageBackWithImage:)]) {
            [
self . delegate selectImageBackWithImage : self . topShowImageView . image ];
            [
self . navigationController popViewControllerAnimated : YES ];
           
return ;
        }
    }
//    HITSubmitImageViewController *submitImageVC =  [[HITSubmitImageViewController alloc]init];
//    submitImageVC.submitImage = info[@"UIImagePickerControllerOriginalImage"];
//    [self.navigationController pushViewController:submitImageVC animated:YES];
//    UIImage *imageNew = [self scaleToSize:info[@"UIImagePickerControllerOriginalImage"] size:CGSizeMake(kSCREEN_WIDTH, kSCREEN_HEIGHT - 100)];// 上传拍照图片的处理
   
UIImage *image = [ self compressImage :info[ @"UIImagePickerControllerOriginalImage" ] newWidth :( kSCREEN_WIDTH , kSCREEN_HEIGHT - 100 )];
//    UIImage *imageNew = [info objectForKey:@"UIImagePickerControllerEditedImage"];
//    NSData *updata = UIImageJPEGRepresentation(imageNew,0.5f);
//     UIImage *image = [UIImage imageWithData: updata];
   
AGViewController *agview = [[ AGViewController alloc ] init ];
    agview.
imagess = image; //UIImagePickerControllerEditedImage 修改后的图片 //UIImagePickerControllerOriginalImage 原始图片 //info[@"UIImagePickerControllerOriginalImage"]
    agview.
delegateImage = self ;
    [
self presentViewController :agview animated : YES completion : nil ];

}
/**
 *  等比缩放本图片大小
 *
 *  @param newImageWidth
缩放后图片宽度,像素为单位
 *
 *  @return self-->(image)
 */

- (
UIImage *)compressImage:( UIImage *)image newWidth:( CGFloat )newImageWidth
{
   
if (!image) return nil ;
   
float imageWidth = image. size . width ;
   
float imageHeight = image. size . height ;
   
float width = newImageWidth;
   
float height = image. size . height /(image. size . width /width);
   
   
float widthScale = imageWidth /width;
   
float heightScale = imageHeight /height;
   
   
// 创建一个 bitmap context
   
// 并把它设置成为当前正在使用的 context
   
UIGraphicsBeginImageContext ( CGSizeMake (width, height));
   
   
if (widthScale > heightScale) {
        [image
drawInRect : CGRectMake ( 0 , 0 , imageWidth /heightScale , height)];
    }
   
else {
        [image
drawInRect : CGRectMake ( 0 , 0 , width , imageHeight /widthScale)];
    }
   
   
// 从当前 context 中创建一个改变大小后的图片
   
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext ();
   
// 使当前的 context 出堆栈
   
UIGraphicsEndImageContext ();
   
   
return newImage;
   
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uniapp中,可以使用uniapp官方提供的uni-img-compress组件来实现拍照图片压缩上传。 首先,需要在项目中引入uni-img-compress组件。在`pages.json`中的"usingComponents"字段中添加: ``` "usingComponents": { "uni-img-compress": "@/components/uni-img-compress/uni-img-compress" } ``` 接下来,在需要使用压缩上传功能的页面中,使用uni-img-compress组件: ```html <uni-img-compress choose-file="true" :quality="80" :max-width="800" @compress="compressImg" ></uni-img-compress> ``` 其中,`choose-file`属性设置为true表示可以选择文件进行上传,`quality`属性设置压缩图片的质量(范围为0-100),`max-width`属性设置图片的最大宽度。 在对应的页面js文件中,定义compressImg方法来处理压缩后的图片: ```javascript methods: { compressImg(data) { // 获取压缩后的图片数据 const compressedImgData = data.detail.data // 创建FormData对象并将压缩后的图片数据添加到FormData中 const formData = new FormData() formData.append('file', compressedImgData) // 发起上传请求 uni.request({ url: 'http://example.com/upload', method: 'POST', header: { 'content-type': 'multipart/form-data' }, data: formData, success: (res) => { console.log('上传成功', res) }, fail: (err) => { console.error('上传失败', err) } }) } } ``` 以上就是使用uni-img-compress组件实现拍照图片压缩上传的步骤。通过设置适当的quality和max-width参数,可以控制上传图片的大小和质量,提高用户体验同时减少网络传输的流量消耗。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值