ShareSDK隐藏功能 - 压缩图片

分享图片的时候,由于各个平台的图片大小的限制,或者为了节省用户流量,需要对图片进行压缩。这时候如果集成了ShareSDK,可以使用其提供的压缩方法实现对图片的压缩。
* SSDKImage

    /**
     *  JPG图片格式
     */
    extern NSString *const SSDKImageFormatJpeg;

    /**
     *  PNG图片格式
     */
    extern NSString *const SSDKImageFormatPng;

    /**
     *  图片质量键,当图片为JPG时有效
     */
    extern NSString *const SSDKImageSettingQualityKey;
    /**
    *  初始化图片
    *
    *  @param image 原始的图片对象
    *  @param format   图片格式,由SSDKImageFormatJpeg和SSDKImageFormatPng来指定分享出去的是JPG还是PNG图片,如果传入其他值则默认为JPG
    *
    *  @return 图片对象
    */
    - (id)initWithImage:(UIImage *)image format:(NSString *)format settings:(NSDictionary *)settings;

此处的字典应该填充什么值呢?@{SSDKImageSettingQualityKey : @(compression)},其中compression是你将要进行压缩的质量比。

这个方法很好用,他将压缩的图片保存到了沙盒的tmp/路径下,由系统负责清理工作,非常方便。

其实分享图片压缩对于分享单张图片还没那么必要,对于多张图片的分享完全是有必要的,不然图片大小很可能超过限制,不能继续分享。

  • UIActivityViewController的多图分享。

    通过自定义一个类并遵守UIActivityItemSource,将压缩的图片路径分享出去,达到压缩的目的。自定义类的实现可以参考这篇文章。

  • SLComposeViewController的多图分享。

    通过addURL:将压缩图片的本地路径添加进去。

所以关键还是得拿到SSDKImage压缩图片的路径。但是通过api并没有找到对应的属性或者方法,该怎么办呢?可以通过[sImage valueForKey:@"URL"]拿到路径,URL对应一个私有实例变量。另外,我使用的ShareSDK3版本是4.0.2。如果使用此方法会崩溃,应该就是SSDKImagekey值发生了变化。

猜你喜欢

转载自blog.csdn.net/jianghui12138/article/details/81035367