NIMImageObject.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. //
  2. // NIMImageObject.h
  3. // NIMLib
  4. //
  5. // Created by Netease.
  6. // Copyright (c) 2015年 Netease. All rights reserved.
  7. //
  8. #import "NIMMessageObjectProtocol.h"
  9. #import "NIMPlatform.h"
  10. NS_ASSUME_NONNULL_BEGIN
  11. /**
  12. * 图片格式
  13. */
  14. typedef NS_ENUM(NSInteger, NIMImageFormat)
  15. {
  16. /**
  17. * Jpeg格式
  18. */
  19. NIMImageFormatJPEG,
  20. /**
  21. * Png格式
  22. */
  23. NIMImageFormatPNG,
  24. };
  25. /**
  26. * 图片选项
  27. */
  28. @interface NIMImageOption : NSObject
  29. /**
  30. * 压缩参数默认为 0.5,可传入0.0-1.0的值,如果传入非法参数,则按照 0.5 进行压缩
  31. */
  32. @property (nonatomic,assign) float compressQuality;
  33. /**
  34. * 图片压缩格式,默认为JPEG
  35. */
  36. @property (nonatomic,assign) NIMImageFormat format;
  37. @end
  38. /**
  39. * 图片实例对象
  40. */
  41. @interface NIMImageObject : NSObject<NIMMessageObject>
  42. /**
  43. * 图片实例对象初始化方法
  44. *
  45. * @param image 要发送的图片
  46. *
  47. * @return 图片实例对象
  48. */
  49. - (instancetype)initWithImage:(UIImage*)image;
  50. /**
  51. * 图片实例对象初始化方法
  52. *
  53. * @param filepath 要发送的图片路径
  54. *
  55. * @discussion 使用此方法上传是不做压缩转换的原图上传。iOS 11 苹果采用了新的图片格式 HEIC ,如果采用原图会导致其他设备的兼容问题,请开发者在上层做好格式的兼容转换。
  56. *
  57. * @return 图片实例对象
  58. */
  59. - (instancetype)initWithFilepath:(NSString *)filepath;
  60. /**
  61. * 图片实例对象初始化方法
  62. *
  63. * @param data 图片数据
  64. * @param extension 推荐使用的图片数据后缀名
  65. *
  66. * @return 图片实例对象
  67. */
  68. - (instancetype)initWithData:(NSData *)data
  69. extension:(NSString *)extension;
  70. /**
  71. * 图片实例对象初始化方法
  72. *
  73. * @param image 要发送的图片
  74. * @param scene 场景类别
  75. *
  76. * @return 图片实例对象
  77. */
  78. - (instancetype)initWithImage:(UIImage*)image scene:(NSString *)scene;
  79. /**
  80. * 图片实例对象初始化方法
  81. *
  82. * @param filepath 要发送的图片路径
  83. * @param scene 场景类别
  84. *
  85. * @discussion 使用此方法上传是不做压缩转换的原图上传。iOS 11 苹果采用了新的图片格式 HEIC ,如果采用原图会导致其他设备的兼容问题,请开发者在上层做好格式的兼容转换。
  86. *
  87. * @return 图片实例对象
  88. */
  89. - (instancetype)initWithFilepath:(NSString *)filepath scene:(NSString *)scene;
  90. /**
  91. * 图片实例对象初始化方法
  92. *
  93. * @param data 图片数据
  94. * @param extension 推荐使用的图片数据后缀名
  95. * @param scene 场景类别
  96. *
  97. * @return 图片实例对象
  98. */
  99. - (instancetype)initWithData:(NSData *)data
  100. extension:(NSString *)extension
  101. scene:(NSString *)scene;
  102. /**
  103. * 文件展示名
  104. */
  105. @property (nullable, nonatomic, copy) NSString *displayName;
  106. /**
  107. * 图片本地路径
  108. * @discussion 目前 SDK 没有提供下载大图的方法,但推荐使用这个地址作为图片下载地址,APP 可以使用自己的下载类或者 SDWebImage 做图片的下载和管理
  109. */
  110. @property (nullable, nonatomic, copy, readonly) NSString *path;
  111. /**
  112. * 缩略图本地路径
  113. */
  114. @property (nullable, nonatomic, copy, readonly) NSString *thumbPath;
  115. /**
  116. * 图片远程路径
  117. */
  118. @property (nullable, nonatomic, copy, readonly) NSString *url;
  119. /**
  120. * 缩略图远程路径
  121. * @discussion 仅适用于使用云信上传服务进行上传的资源,否则无效。
  122. */
  123. @property (nullable, nonatomic, copy, readonly) NSString *thumbUrl;
  124. /**
  125. * 图片尺寸
  126. */
  127. @property (nonatomic, assign, readonly) CGSize size;
  128. /**
  129. * 图片选项
  130. * @discussion 仅在发送时且通过 initWithImage: 方式初始化才有效
  131. */
  132. @property (nullable, nonatomic ,strong) NIMImageOption *option;
  133. /**
  134. * 文件大小
  135. */
  136. @property (nonatomic, assign, readonly) long long fileLength;
  137. /**
  138. * 图片MD5
  139. */
  140. @property (nullable,nonatomic, copy, readonly) NSString *md5;
  141. @end
  142. NS_ASSUME_NONNULL_END