爲什麼onPictureTaken(byte [] data,Camera camera)和onPreviewFrame(byte [] data,Camera camera)的數據字節數組大小不同。前者具有原始圖像,因此給我一個清晰的圖像,後者給了我一個像素化的圖像。我沒有使用onPictureTaken,因爲它有時不會被觸發。 如果我的照片尺寸爲1600×1400的屏幕尺寸爲800×480 onPictureTaken給了我1600×1400 和 onPreviewFrame給了我800×480onPictureTaken和onPreviewFrame上的數據字節數組大小不同
這是我的代碼:
mCamera.setOneShotPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
int format = parameters.getPreviewFormat();
//YUV formats require more conversion
if (format == ImageFormat.NV21 || format == ImageFormat.YUY2 || format == ImageFormat.NV16) {
int w = parameters.getPreviewSize().width;
int h = parameters.getPreviewSize().height;
// Get the YuV image
YuvImage yuv_image = new YuvImage(data, format, w, h, null);
}
我有一直困擾着這個問題一個星期。
P.S. - 在負的評分的情況下,請說明理由
有沒有辦法將編碼的onPreviewFrame數組轉換爲onPictureTaken?最大支持的預覽尺寸是800 x 480.在薑餅有時很少onPictureTaken沒有觸發。 –
@Rohit_Ramkumar:「有沒有辦法將編碼的onPreviewFrame數組轉換爲onPictureTaken?」 - 'onPictureTaken()'是一種方法。無法將預覽圖像轉換爲Java方法。 「並且最大支持的預覽尺寸爲800 x 480」 - 可能在您的設備上,但預覽尺寸因設備而異。 – CommonsWare
唯一的解決方案是onPictureTaken()?我正在嘗試拍攝文件並上傳。因此文件必須是可讀的。 –