酷店

UIImage+MultiFormat.m 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * This file is part of the SDWebImage package.
  3. * (c) Olivier Poitrey <rs@dailymotion.com>
  4. *
  5. * For the full copyright and license information, please view the LICENSE
  6. * file that was distributed with this source code.
  7. */
  8. #import "UIImage+MultiFormat.h"
  9. #import "SDImageCodersManager.h"
  10. @implementation UIImage (MultiFormat)
  11. + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data {
  12. return [self sd_imageWithData:data scale:1];
  13. }
  14. + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale {
  15. return [self sd_imageWithData:data scale:scale firstFrameOnly:NO];
  16. }
  17. + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data scale:(CGFloat)scale firstFrameOnly:(BOOL)firstFrameOnly {
  18. if (!data) {
  19. return nil;
  20. }
  21. SDImageCoderOptions *options = @{SDImageCoderDecodeScaleFactor : @(MAX(scale, 1)), SDImageCoderDecodeFirstFrameOnly : @(firstFrameOnly)};
  22. return [[SDImageCodersManager sharedManager] decodedImageWithData:data options:options];
  23. }
  24. - (nullable NSData *)sd_imageData {
  25. return [self sd_imageDataAsFormat:SDImageFormatUndefined];
  26. }
  27. - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat {
  28. return [self sd_imageDataAsFormat:imageFormat compressionQuality:1];
  29. }
  30. - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality {
  31. return [self sd_imageDataAsFormat:imageFormat compressionQuality:compressionQuality firstFrameOnly:NO];
  32. }
  33. - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat compressionQuality:(double)compressionQuality firstFrameOnly:(BOOL)firstFrameOnly {
  34. SDImageCoderOptions *options = @{SDImageCoderEncodeCompressionQuality : @(compressionQuality), SDImageCoderEncodeFirstFrameOnly : @(firstFrameOnly)};
  35. return [[SDImageCodersManager sharedManager] encodedDataWithImage:self format:imageFormat options:options];
  36. }
  37. @end