北京专业网站翻译影音字幕翻译速记速记快而高效,网站建设 万网 域名,赣州企业做网站,wordpress4.9 多站点JPG还是PNG#xff1f;
实际上#xff0c;在前几天的blog#xff0c;我们有从压缩方式、图像质量、透明效果、可编辑性等各方面做过差异化的介绍。
压缩方式#xff1a;JPG是一种有损压缩格式#xff0c;通过丢弃图像数据来减小文件大小#xff0c;因此可能会损失一些图…JPG还是PNG
实际上在前几天的blog我们有从压缩方式、图像质量、透明效果、可编辑性等各方面做过差异化的介绍。
压缩方式JPG是一种有损压缩格式通过丢弃图像数据来减小文件大小因此可能会损失一些图像细节和质量。而PNG使用的是无损压缩格式它不会丢失任何原始图像数据从而保持了图像的完整性和质量。图像质量由于压缩方式的不同JPG在压缩后会牺牲一部分图像数据因此在图像质量上可能存在损失例如可能会出现锯齿状边缘或颜色失真。相比之下PNG的无损压缩可以保证原图像数据的完整性其256个透明层次的设定可以使图片边缘平滑融合从而消除图片锯齿边缘。透明效果PNG支持透明度可以用作背景透明的图片而JPG则不支持透明效果。因此如果你需要制作半透明的图像或者需要背景透明的图片PNG是一个更好的选择。可编辑性JPG是一种不可编辑的图片格式一旦被保存为JPG格式就无法进行修改。而PNG是一种可编辑的图片格式可以通过图像编辑软件如Photoshop进行修改、编辑和重新保存。例如你可以改变PNG图片中的文字样式、线条等元素。
Android平台RTSP|RTMP播放器快照 Android平台RTSP|RTMP播放器截图我们都是直接保存png图片新的接口jpg和png均支持。
原接口 /*** 请使用新的CaptureImage接口, 这个接口只能保存为PNG图片, 不再推荐使用* Save current image during playback stream(实时快照)** param handle: return value from SmartPlayerOpen()** param imageName: image name, which including fully path, /sdcard/daniuliveimage/daniu.png, etc.** return {0} if successful*/public native int SmartPlayerSaveCurImage(long handle, String imageName);
值得注意的是原接口如果需要截图还需要调用SmartPlayerSaveImageFlag()。
新的接口我们设计如下 /*** 新的截图接口, 支持JPEG和PNG两种格式* param compress_format: 压缩格式, 0:JPEG格式, 1:PNG格式, 其他返回错误* param quality: 取值范围:[0, 100], 值越大图像质量越好, 仅对JPEG格式有效, 若是PNG格式,请填100* param file_name: 图像文件名, 例如:/dirxxx/test20231113100739.jpeg, /dirxxx/test20231113100739.png* param user_data_string: 用户自定义字符串* return {0} if successful*/public native int CaptureImage(long handle, int compress_format, int quality, String file_name, String user_data_string);
如何调用 btnCaptureImage.setOnClickListener(new Button.OnClickListener() {SuppressLint(SimpleDateFormat)public void onClick(View v) {if (0 playerHandle)return;if (null capture_image_date_format_)capture_image_date_format_ new SimpleDateFormat(yyyyMMdd_HHmmss_SSS);String timestamp capture_image_date_format_.format(new Date());String imageFileName timestamp;String image_path imageSavePath / imageFileName;int quality;boolean is_jpeg true;if (is_jpeg) {image_path .jpeg;quality 100;}else {image_path .png;quality 100;}int capture_ret libPlayer.CaptureImage(playerHandle,is_jpeg?0:1, quality, image_path, test cix);Log.i(TAG, capture image ret: capture_ret , file: image_path);}});
截图成功对应的event回调如下 class EventHandeV2 implements NTSmartEventCallbackV2 {Overridepublic void onNTSmartEventCallbackV2(long handle, int id, long param1,long param2, String param3, String param4, Object param5) {String player_event ;switch (id) {case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_STARTED:player_event 开始..;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTING:player_event 连接中..;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTION_FAILED:player_event 连接失败..;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTED:player_event 连接成功..;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_DISCONNECTED:player_event 连接断开..;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_STOP:player_event 停止播放..;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_RESOLUTION_INFO:player_event 分辨率信息: width: param1 , height: param2;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_NO_MEDIADATA_RECEIVED:player_event 收不到媒体数据可能是url错误..;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_SWITCH_URL:player_event 切换播放URL..;break;case NTSmartEventID.EVENT_DANIULIVE_ERC_PLAYER_CAPTURE_IMAGE:player_event 快照: param1 路径 param3;if (param1 0)player_event player_event , 截取快照成功;elseplayer_event player_event , 截取快照失败;if (param4 ! null !param4.isEmpty())player_event (, user data: param4);break;..........}if (player_event.length() 0) {Log.i(TAG, player_event);Message message new Message();message.what PLAYER_EVENT_MSG;message.obj player_event;handler.sendMessage(message);}}}
总结
大家都知道JPGJPEG是有损压缩格式保持图片质量的同时通过牺牲一部分图像信息来减小文件尺寸。所以JPG适合用于存储照片和其他复杂的图像。JPG格式的文件通常比PNG格式的文件小因此在网络传输和存储时更为方便。