如何修改 SDK 默认的图片与视频压缩配置?

描述

在使用 Android/iOS 客户端 IMLib/IMKit SDK 发送图片与小视频时,SDK 有以下默认行为:

  • 图片消息的缩略图:SDK 会以原图 30% 质量生成符合标准大小要求的大图后再上传和发送。压缩后最长边不超过 240 px。缩略图用于在聊天界面中展示。
  • 图片:发送消息时如未选择发送原图,SDK 会以原图 85% 质量生成符合标准大小要求的大图后再上传和发送。压缩后最长边不超过 1080 px。
  • 小视频消息的缩略图:从小视频首帧画面生成缩略图,具体生成方式与图片缩略图相同。
  • 小视频:压缩小视频文件为分辨率 544 * 960 的文件。

App 可能希望修改 SDK 默认的压缩配置。

分析(根因分析、需求分析)

一般不建议修改 SDK 默认配置。可能的负面影响如下:

  • 上调缩略图质量会导致消息内容体增大。消息内容体超过 128 KB 限制后可能会发送失败。
  • 上调原图或小视频压缩比例可能会导致文件过大,增加上传时长,导致发送缓慢。

解决方案

如需修改,请您在开发环境中充分测试修改后的效果。

Android 端修改方式

  1. 在应用目录下,新建配置文件:/src/main/res/values/rc_configuration.xml

  2. 拷贝以下内容至新建的 rc_configuration.xml 文件中。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <!--图片压缩比例-->
        <integer name="rc_image_quality">85</integer>
        <!--图片压缩宽、高-->
        <integer name="rc_image_size">1080</integer>
    
        <!--配置发送图片时,如果图片大小不超过 200k 则发送原图-->
        <integer name="rc_max_original_image_size">200</integer>
    
        <!--图片与小视频的缩略图压缩比例-->
        <integer name="rc_thumb_quality">30</integer>
        <!--缩略图压缩宽、高-->
        <integer name="rc_thumb_compress_size">240</integer>
        <!--缩略图压缩最小宽、高-->
        <integer name="rc_thumb_compress_min_size">100</integer>
    
        <!--小视频压缩宽度,建议使用16的倍数-->
        <integer name="rc_sight_compress_width">544</integer>
        <!--小视频压缩高度,建议使用16的倍数-->
        <integer name="rc_sight_compress_height">960</integer>
    
    </resources>
    

iOS 端修改方式

修改 SDK 的配置文件:/imlibcore/RongIMLibCore/RCConfig.plist注意,SDK 升级后,该配置将被覆盖。

  • Image Key 下可修改图片相关配置。
  • Sight Key 下可修改小视频相关配置。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Location</key>
	<dict>
		<key>LocationImageQuality</key>
		<real>0.7</real>
		<key>LocationImageWidth</key>
		<string>480</string>
		<key>LocationImageHeight</key>
		<string>240</string>
	</dict>
	<key>File</key>
	<dict>
		<key>RelativePath</key>
		<string>Documents/MyFile</string>
		<key>MaxRangeUnit</key>
		<real>1048576</real>
	</dict>
	<key>Voice</key>
	<dict>
		<key>AudioEncodingBitRate</key>
		<real>7950</real>
	</dict>
	<key>Image</key>
	<dict>
		<key>ThumbnailQuality</key>
		<string>0.3</string>
		<key>ThumbnailMaxSize</key>
		<string>240</string>
		<key>ThumbnailMinSize</key>
		<string>100</string>
		<key>ImageQuality</key>
		<real>0.85</real>
		<key>ImageWidth</key>
		<integer>1080</integer>
		<key>ImageHeight</key>
		<integer>1080</integer>
	</dict>
	<key>CustomerService</key>
	<dict>
		<key>SuspendWhenLeave</key>
		<true/>
	</dict>
	<key>Download</key>
	<dict>
		<key>DownloadSliceSize</key>
		<real>20971520</real>
	</dict>
	<key>Sight</key>
	<dict>
		<key>SightCompressWidth</key>
		<integer>540</integer>
		<key>SightCompressHeight</key>
		<integer>960</integer>
	</dict>
</dict>
</plist>

更多支持

如有疑问,欢迎提交工单