如題:我有一個Image類(格式為:YUV_420_888),現需要將其轉化為Bitmap類(RGB型別),請問如何去實作?
已經把百度到的方法都試了,都不能滿足。
uj5u.com熱心網友回復:
直接轉肯定不行1.YUV_420_888 轉RGB
2.RGB寫bitmap
uj5u.com熱心網友回復:
請問能麻煩給出代碼么,我因為畢設才接觸java和Android,這塊比較迷糊uj5u.com熱心網友回復:
百度一堆https://www.cnblogs.com/arxive/p/6277377.html
uj5u.com熱心網友回復:
先去百度一波 不會再問uj5u.com熱心網友回復:
你能找得到我都試過了,你這個是C#的
uj5u.com熱心網友回復:
bool yuv420ToRgb(char *yuv, int w, int h, char *rgb)
{
unsigned char *y = new unsigned char[w*h];
unsigned char *u = new unsigned char[w*h / 4];
unsigned char *v = new unsigned char[w*h / 4];
memcpy(y, yuv, w*h);
memcpy(u, yuv + w * h, w*h / 4);
memcpy(v, yuv + w * h * 5 / 4, w*h / 4);
for (int i = 0; i < h; i++)
{
for (int j = 0; j < w; j++)
{
rgb[i*w*3 + 3*j] = 1.164*(y[i*w+j] - 16) + 1.596*(v[i / 4 * w + j / 2] - 128);//R
rgb[i*w*3 + 3*j+1] = 1.164*(y[i*w + j] - 16) - 0.392*(u[i / 4*w+j/2] - 128) - 0.813*(v[i / 4 * w + j / 2] - 128);//G
rgb[i*w*3 + 3*j+2] = 1.164*(y[i*w + j] - 16) + 2.017*(u[i / 4 * w + j / 2] - 128); //B
}
}
free(y);
free(u);
free(v);
return true;
}
試試這個
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/275998.html
標籤:Android
上一篇:android原始碼編譯
