图片显示错乱时用下面的方法将skia 解码的图片dump出来,以理清是否skia的原因造成。
dump jpeg解码出来的SkBitmap方法
/external/skia/src/images/SkImageDecoder_libjpeg.cpp
1. 增加头文件
#include "SkString.h"
#include <unistd.h>
2. 增加新方法
static void saveToFile(const char name[], const SkBitmap& bm) {
//SkImageEncoder::EncodeFile(name, bm, SkImageEncoder::kJPEG_Type, 50);
SkImageEncoder::EncodeFile(name, bm, SkImageEncoder::kPNG_Type, 100);
}
3. 在onDecode()返回之前,dump SkBitmap:
bool SkJPEGImageDecoder::onDecode(SkStream* stream, SkBitmap* bm, Mode mode) {
....
XLOGD("jpeg_decoder finish successfully, L:%d!!!\n",__LINE__);
// add by mtk start
SkMSec now = SkTime::GetMSecs();
SkDebugf("dump SkBitmap, start>>>%u", now);
if (access("/sdcard/images", F_OK) == 0)
{
SkString filename;
filename.printf("/sdcard/images/%u.png", now);
SkDebugf("SkBitmap save to file %s", filename.c_str() );
saveToFile(filename.c_str(), *bm);
}
// add by mtk end
return true;
}
mmm external/skia
将libskia.so push到手机后,reboot
===========================================
除代码修改外,还要进行以下操作:
手机连上USB,执行如下命令
adb shell
cd sdcard
mkdir images
chmod 777 images
图库经过skia渲染后dump出照片查看是否是skia的问题
最新推荐文章于 2021-08-13 19:28:51 发布