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 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); } }
/** * Note: This conversion procedure is sloppy and may result in JPEG compression artifacts * * @param yuvImage - The YuvImage to convert * @return - The converted Bitmap */ public static Bitmap convertYuvImageToBitmap(@NonNull final YuvImage yuvImage) { ByteArrayOutputStream out = new ByteArrayOutputStream(); yuvImage.compressToJpeg(new Rect(0, 0, yuvImage.getWidth(), yuvImage.getHeight()), 100, out); byte[] imageBytes = out.toByteArray(); try { out.close(); } catch (IOException e) { Log.e(LOG_TAG, "Exception while closing output stream", e); } return BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length); }
private Bitmap captureBitmapFromYuvFrame(I420Frame i420Frame) { YuvImage yuvImage = i420ToYuvImage(i420Frame.yuvPlanes, i420Frame.yuvStrides, i420Frame.width, i420Frame.height); ByteArrayOutputStream stream = new ByteArrayOutputStream(); Rect rect = new Rect(0, 0, yuvImage.getWidth(), yuvImage.getHeight()); // Compress YuvImage to jpeg yuvImage.compressToJpeg(rect, 100, stream); // Convert jpeg to Bitmap byte[] imageBytes = stream.toByteArray(); Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length); Matrix matrix = new Matrix(); // Apply any needed rotation matrix.postRotate(i420Frame.rotationDegree); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); return bitmap; }
/** * 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"); } }
.getPreviewFormat(), width, height, null); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); yuvImage.compressToJpeg(new Rect(0, 0, width, height), 80, byteArrayOutputStream); byte[] jpegData = byteArrayOutputStream.toByteArray();
ImageFormat.NV21, width, height, null); image.compressToJpeg( new Rect(0, 0, image.getWidth(), image.getHeight()), 90, filecon); // 将NV21格式图片,以质量70压缩成Jpeg,并得到JPEG数据流
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(); } } }
null); baos = new ByteArrayOutputStream(); yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 100, baos);// 80--JPG图片的质量[0-100],100最高 rawImage = baos.toByteArray();
.getPreviewFormat(), width, height, null); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); yuvImage.compressToJpeg(new Rect(0, 0, width, height), 80, byteArrayOutputStream);
YuvImage image = new YuvImage(nv21, ImageFormat.NV21, PREVIEW_WIDTH, PREVIEW_HEIGHT, null); //将NV21 data保存成YuvImage image.compressToJpeg( new Rect(0, 0, image.getWidth(), image.getHeight()), 100, fos);
YuvImage image = new YuvImage(nv21, ImageFormat.NV21, PREVIEW_WIDTH, PREVIEW_HEIGHT, null); //将NV21 data保存成YuvImage image.compressToJpeg( new Rect(0, 0, image.getWidth(), image.getHeight()), 100, fos);
@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); } });
ByteArrayOutputStream tmpBuffer = new ByteArrayOutputStream(); image.compressToJpeg(new Rect(0, 0, image.getWidth(), image.getHeight()), 67, tmpBuffer); this.frameBuffer = tmpBuffer.toByteArray(); this.frameID++;
if (image != null) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); image.compressToJpeg(new Rect(left, top, right, bottom), getQuality(size.height), stream); Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
yuvImage.compressToJpeg(rect, 100, stream);
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); byte[] bytes = out.toByteArray(); videoFirstFrame = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);