private Bitmap getBitmap(Rect cropRect, int scaleFactor) { if(isRotated()) { //noinspection SuspiciousNameCombination cropRect = new Rect(cropRect.top, cropRect.left, cropRect.bottom, cropRect.right); } // TODO: there should be a way to do this without JPEG compression / decompression cycle. YuvImage img = new YuvImage(data, imageFormat, dataWidth, dataHeight, null); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); img.compressToJpeg(cropRect, 90, buffer); byte[] jpegData = buffer.toByteArray(); BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = scaleFactor; Bitmap bitmap = BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length, options); // Rotate if required if (rotation != 0) { Matrix imageMatrix = new Matrix(); imageMatrix.postRotate(rotation); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), imageMatrix, false); } return bitmap; }
private YuvImage fastI420ToYuvImage(ByteBuffer[] yuvPlanes, int[] yuvStrides, int width, int height) { byte[] bytes = new byte[width * height * 3 / 2]; int i = 0; for (int row = 0 ; row < height ; row++) { for (int col = 0 ; col < width ; col++) { bytes[i++] = yuvPlanes[0].get(col + row * yuvStrides[0]); } } for (int row = 0 ; row < height / 2 ; row++) { for (int col = 0 ; col < width / 2; col++) { bytes[i++] = yuvPlanes[2].get(col + row * yuvStrides[2]); bytes[i++] = yuvPlanes[1].get(col + row * yuvStrides[1]); } } return new YuvImage(bytes, NV21, width, height, null); }
private void yuvToJpeg(byte[] data, int width, int height, int quality, String path) throws IOException { YuvImage yuvimage = new YuvImage(data, ImageFormat.NV21, width, height, null); FileOutputStream fos = null; try { fos = new FileOutputStream(path); yuvimage.compressToJpeg(new Rect(0, 0, width, height), quality, fos); } finally { if (fos != null) { fos.close(); } } }
public Bitmap decodeToBitMap(byte[] data) { Bitmap bmp = null; try { YuvImage image = new YuvImage(data, ImageFormat.NV21, width, width, null); if (image != null) { Log.d("Fuck", "image != null"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); image.compressToJpeg(new Rect(0, 0, width, width), 80, stream); bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size()); stream.close(); } } catch (Exception ex) { Log.e("Fuck", "Error:" + ex.getMessage()); } return bmp; }
public static Bitmap decodeToBitMap(byte[] data, Camera _camera) { Camera.Size size = _camera.getParameters().getPreviewSize(); try { YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null); if (image != null) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); image.compressToJpeg(new Rect(0, 0, size.width, size.height), 80, stream); Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size()); stream.close(); return bmp; } } catch (Exception ex) { } return null; }
private void compressToJpeg(String fileName, Image image) { FileOutputStream outStream; try { outStream = new FileOutputStream(fileName); } catch (IOException ioe) { throw new RuntimeException("Unable to create output file " + fileName, ioe); } Rect rect = image.getCropRect(); YuvImage yuvImage = new YuvImage(getDataFromImage(image, COLOR_FormatNV21), ImageFormat.NV21, rect.width(), rect.height(), null); yuvImage.compressToJpeg(rect, 100, outStream); } }
/** * frame call back function * @param data * @param camera */ public void onPreviewFrame(byte[] data,Camera camera){ try{ //convert YuvImage(NV21) to JPEG Image data YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,this.width,this.height,null); System.out.println("WidthandHeight"+yuvimage.getHeight()+"::"+yuvimage.getWidth()); ByteArrayOutputStream baos=new ByteArrayOutputStream(); yuvimage.compressToJpeg(new Rect(0,0,this.width,this.height),100,baos); mFrameBuffer = baos; }catch(Exception e){ Log.d("parse","errpr"); } }
public Bitmap getBitMap(byte[] data, Camera camera, boolean mIsFrontalCamera) { int width = camera.getParameters().getPreviewSize().width; int height = camera.getParameters().getPreviewSize().height; YuvImage yuvImage = new YuvImage(data, camera.getParameters() .getPreviewFormat(), width, height, null); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
YuvImage image = new YuvImage(data, ImageFormat.NV21, width, height, null);
private void onRequestDetect(byte[] data) { // 相机已经关闭 if (camera == null || data == null) { return; } YuvImage img = new YuvImage(data, ImageFormat.NV21, optSize.width, optSize.height, null); ByteArrayOutputStream os = null; try { os = new ByteArrayOutputStream(data.length); img.compressToJpeg(new Rect(0, 0, optSize.width, optSize.height), 80, os); byte[] jpeg = os.toByteArray(); int status = detectCallback.onDetect(jpeg, getCameraRotation()); if (status == 0) { clearPreviewCallback(); } } catch (OutOfMemoryError e) { // 内存溢出则取消当次操作 } finally { try { os.close(); } catch (Throwable e) { e.printStackTrace(); } } }
YuvImage yuvimage = new YuvImage( data, ImageFormat.NV21,
public Bitmap getBitMapWithRect(byte[] data, Camera camera, boolean mIsFrontalCamera,Rect rect) { int width = camera.getParameters().getPreviewSize().width; int height = camera.getParameters().getPreviewSize().height; YuvImage yuvImage = new YuvImage(data, camera.getParameters() .getPreviewFormat(), width, height, null); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
public static Bitmap getBitmapFromYuvFrame(@NonNull final Frame frame) { byte[] pixels = ((Frame.ByteArrayFrame) frame).getByteArray(); YuvImage yuvImage = new YuvImage(pixels, ImageFormat.NV21, frame.getWidth(), frame.getHeight(), null); return convertYuvImageToBitmap(yuvImage); }
fos = new FileOutputStream(f); if (data.length < 35000) { YuvImage image = new YuvImage(nv21, ImageFormat.NV21, PREVIEW_WIDTH, PREVIEW_HEIGHT, null); //将NV21 data保存成YuvImage
fos = new FileOutputStream(f); if (data.length < 35000) { YuvImage image = new YuvImage(nv21, ImageFormat.NV21, PREVIEW_WIDTH, PREVIEW_HEIGHT, null); //将NV21 data保存成YuvImage
@Override public void onPreviewFrame(byte[] data, Camera camera) { camera.setPreviewCallback(null); if (mCamera == null) return; Camera.Parameters parameters = camera.getParameters(); int width = parameters.getPreviewSize().width; int height = parameters.getPreviewSize().height; YuvImage yuv = new YuvImage(data, parameters.getPreviewFormat(), width, height, null); ByteArrayOutputStream out = new ByteArrayOutputStream(); yuv.compressToJpeg(new Rect(0, 0, width, height), 50, out); byte[] bytes = out.toByteArray(); if (mRecordVideoInterface != null) { mRecordVideoInterface.onTakePhoto(bytes); } //设置这个可以达到预览的效果 // mCamera.setPreviewCallback(this); } });
synchronized (frameLock) { Size cameraImageSize = parameters.getPreviewSize(); YuvImage image = new YuvImage(frame, parameters.getPreviewFormat(), cameraImageSize.width, cameraImageSize.height, null); ByteArrayOutputStream tmpBuffer = new ByteArrayOutputStream();
int bottom = (int) (top + getResources().getDimension(R.dimen.x160)); final YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width, size.height, null); if (image != null) { ByteArrayOutputStream stream = new ByteArrayOutputStream();
return new YuvImage(bytes, NV21, width, height, null);
int width = parameters.getPreviewSize().width; int height = parameters.getPreviewSize().height; YuvImage yuv = new YuvImage(firstFrame_data, parameters.getPreviewFormat(), width, height, null); ByteArrayOutputStream out = new ByteArrayOutputStream(); yuv.compressToJpeg(new Rect(0, 0, width, height), 50, out);