Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iOS 网络图片转为UIImage 和微信分享时缩略图片的压缩

iOS 网络图片转为UIImage 和微信分享时缩略图片的压缩

作者头像
honey缘木鱼
发布于 2018-12-14 08:37:03
发布于 2018-12-14 08:37:03
2K00
代码可运行
举报
文章被收录于专栏:娱乐心理测试娱乐心理测试
运行总次数:0
代码可运行

在写微信分享项目时,发现微信设置缩略图:

image

我们的图片是从阿里云那里获取的网络图片,需要把网络图片转化为UIImage,下面就是方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+(UIImage *) getImageFromURL:(NSString *)fileURL

{
    UIImage * result;

    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];

    result = [UIImage imageWithData:data];

    return result;
}

image.gif

微信设置的缩略图要小于32KB,否则无法调起微信,而微信也没有返回错误信息,只是[WXApi sendReq:req]=NO,所以我们要压缩小于32Kb

压缩方法为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#pragma mark - 压缩图片
+ (UIImage *)compressImage:(UIImage *)image toByte:(NSUInteger)maxLength {
    // Compress by quality
    CGFloat compression = 1;
    NSData *data = UIImageJPEGRepresentation(image, compression);
    if (data.length < maxLength) return image;

    CGFloat max = 1;
    CGFloat min = 0;
    for (int i = 0; i < 6; ++i) {
        compression = (max + min) / 2;
        data = UIImageJPEGRepresentation(image, compression);
        if (data.length < maxLength * 0.9) {
            min = compression;
        } else if (data.length > maxLength) {
            max = compression;
        } else {
            break;
        }
    }
    UIImage *resultImage = [UIImage imageWithData:data];
    if (data.length < maxLength) return resultImage;

    // Compress by size
    NSUInteger lastDataLength = 0;
    while (data.length > maxLength && data.length != lastDataLength) {
        lastDataLength = data.length;
        CGFloat ratio = (CGFloat)maxLength / data.length;
        CGSize size = CGSizeMake((NSUInteger)(resultImage.size.width * sqrtf(ratio)),
                                 (NSUInteger)(resultImage.size.height * sqrtf(ratio))); // Use NSUInteger to prevent white blank
        UIGraphicsBeginImageContext(size);
        [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
        resultImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        data = UIImageJPEGRepresentation(resultImage, compression);
    }

    return resultImage;
}

image.gif

调用方法为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   //缩略图要小于32KB,否则无法调起微信,32KB = 32*1024B=32678
   UIImage *pressImage = [IHUtility compressImage:picture toByte:32765];

image.gif

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.11.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS学习——图片压缩到指定大小以内
  在我们开发过程中,有可能会遇到拍照、或者从相册中选择图片,要么单选或者多选,然后上传图片到服务器,一般情况下一张图片可能3-4M,如果类似微信朋友圈上传9张图片大约是 35M左右,如果我们上传 35M左右的图片到服务器,可想而知后台的压力有多大,最主要的还是特别耗时,如果是在网速比较慢,那么用户上传图片可能需要4-5分钟,那么用户就会受不了,可能会退出应用。所有在开发过程中,考虑到手机性能、网络性能等因素的影响,更重要的是后台服务器的内存、网络等性能的限制,我们再通过网络发送图片等信息时不能发送超过一定大小的图片,如果超过了指定大小,我们需要进行压缩后发送。
mukekeheart
2019/09/29
4.3K0
iOS复习中有关SDWebImage可能知识点总结(2)
分为内存缓存(利用SDImageCache类的NSCache属性),磁盘缓存(利用NSFileManager),和操作缓存(利用runtime关联的字典属性)。下载之前先查询缓存,没有就下载并在下载后保存图片到缓存。
陈满iOS
2018/09/10
8490
iOS复习中有关SDWebImage可能知识点总结(2)
iOS--React Native 图片插件(打开、保存、剪切、压缩)
React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。
用户2932962
2019/03/19
2.7K0
iOS 图片压缩方法的示例代码
本篇文章主要介绍了iOS 图片压缩方法的示例代码,主要有两种压缩图片的方法,有兴趣的可以了解一下,有兴趣的可以了解一下。
很酷的站长
2022/11/28
1.7K0
iOS 图片压缩方法的示例代码
ImageHelper.cs-支持高清缩略图
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace System { /// <summary> /// 图片处理类 /// </summary> public class
KenTalk
2018/09/11
9380
PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法
本文实例讲述了PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法。分享给大家供大家参考,具体如下: 这里把ffmpeg 和  生成缩略图整合了一下:
用户2323866
2021/07/01
9050
【IOS开发基础系列】SDWebImageDownloader专题
        SDWebImage是一个很厉害的图片缓存的框架。既ASIHttp+AsyncImage之后,我一直使用AFNetworking集成的UIImageView+AFNetworking.h,但后者对于图片的缓存实际应用的是NSURLCache自带的cache机制。而NSURLCache每次都要把缓存的raw  data 再转化为UIImage,就带来了数据处理和内存方面的更多操作。具体的比较在这里。
江中散人_Jun
2023/10/16
8230
【IOS开发基础系列】SDWebImageDownloader专题
iOS 仿微信相册选择照片imagePicker(Swift) 序号 预览缩略图
ZYImagePickerAndBrower 是一个模仿微信相册多选照片的一个控件。注意了微信相册的一些细节,比如序号,最大选择之后照片变灰,浏览缩略图等等。
星宇大前端
2019/01/15
3.9K0
多媒体-图片、音频、视频压缩
很多时候我们需要把一些图片、音频、视频上传到服务器,于是就有了文件压缩这个问题了,这篇文章就小结一下具体的文件压缩实现吧。
進无尽
2018/09/12
1.8K0
多媒体-图片、音频、视频压缩
iOS小技能:base64字符串和图片的互转
前言 背景: initQRCodeForInputByteSize cannot find proper rs block info (input data too big?) 之前的同事 误认为二维
公众号iOS逆向
2022/08/22
2.9K0
iOS小技能:base64字符串和图片的互转
一文详解 WordPress 文章特色图片或缩略图功能
现在绝大多数的 WordPress 主题,特别是那些杂志型的主题,比如 Autumn Pro,都会给每篇文章加上一张缩略图,一般会在首页或者其他列表页的时候,使用这种展现方式,缩略图可能单独出现,或者和文章摘要一起。
Denis
2023/04/13
1.6K0
一文详解 WordPress 文章特色图片或缩略图功能
【IOS开发高级系列】异步绘制专题
用CGImageCreateCopy 或者CGImageCreateCopyWithColorSpace函数拷贝
江中散人_Jun
2022/03/08
1.5K0
【IOS开发高级系列】异步绘制专题
ThinkPHP5.0 图片上传生成缩略图实例代码说明
很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误。
PHP开发工程师
2021/06/02
7610
[iOS源码笔记]·第三方网络图片处理框架:SDWebImage网络下载及缓存管理策略
typedef void(^SDExternalCompletionBlock)(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL);
陈满iOS
2018/09/10
2.3K0
[iOS源码笔记]·第三方网络图片处理框架:SDWebImage网络下载及缓存管理策略
OpenCV Mat与UIImage之间的转换
  UIImage 转 OpenCV cvMat: 1 - (cv::Mat)cvMatWithImage:(UIImage *)image 2 { 3 CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage); 4 CGFloat cols = image.size.width; 5 CGFloat rows = image.size.height; 6 7 cv::Mat cv
一棹烟波
2019/05/25
1.5K0
Django上传图片生成成缩略图的类
这段代码通过pil生成缩略图,主要通过save函数保存缩略图,自定义了图片的保存位置和原图片位置,可以自己更改,可以指定缩略图的大小。
用户8983410
2021/11/03
1.2K0
SDWebImageV3.7.5源码解析
SDWebImage更新到如今这个版本,过程做了许多改进,性能已经非常的好了。以前就粗略的看过SDWebImage的源码,但是未做记录整理。再次阅读还是受益良多,故做此记录。SDWebImage的结构比较混乱,所以解析其调用顺序也是相当的绕啊。
Haley_Wong
2018/08/22
8510
SDWebImageV3.7.5源码解析
探讨iOS 图片解压缩到渲染过程
一.图像从文件到屏幕过程 通常计算机在显示是CPU与GPU协同合作完成一次渲染.接下来我们了解一下CPU/GPU等在这样一次渲染过程中,具体的分工是什么? CPU: 计算视图frame,图片解码,需要
编程怪才-凌雨画
2020/09/17
1.7K0
WordPress 高级缩略图插件:WPJAM Thumbnail
该插件的所有功能都已经整合到WPJAM Basic的缩略图设置功能模块,并且免费提供。
Denis
2023/04/14
1.4K0
WordPress 高级缩略图插件:WPJAM Thumbnail
如何使用Java快速地给图片转码和生成缩略图(Thumbnailator和webp-imageio-core的使用)
本文中介绍,如何使用Java优雅处理图片;包括:主流图片格式转码、图片压缩(缩略图生成)等。主要用到的外部工具包:
Mintimate
2021/01/26
8.2K1
如何使用Java快速地给图片转码和生成缩略图(Thumbnailator和webp-imageio-core的使用)
推荐阅读
相关推荐
iOS学习——图片压缩到指定大小以内
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验