當前位置: 首頁>>代碼示例>>Java>>正文


Java ImageFormat.NV21屬性代碼示例

本文整理匯總了Java中android.graphics.ImageFormat.NV21屬性的典型用法代碼示例。如果您正苦於以下問題:Java ImageFormat.NV21屬性的具體用法?Java ImageFormat.NV21怎麽用?Java ImageFormat.NV21使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在android.graphics.ImageFormat的用法示例。


在下文中一共展示了ImageFormat.NV21屬性的11個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: createFromNV21

public static byte[] createFromNV21(@NonNull final byte[] data,
                                    final int width,
                                    final int height,
                                    int rotation,
                                    final Rect croppingRect,
                                    final boolean flipHorizontal)
    throws IOException
{
  byte[] rotated = rotateNV21(data, width, height, rotation, flipHorizontal);
  final int rotatedWidth  = rotation % 180 > 0 ? height : width;
  final int rotatedHeight = rotation % 180 > 0 ? width  : height;
  YuvImage previewImage = new YuvImage(rotated, ImageFormat.NV21,
                                       rotatedWidth, rotatedHeight, null);

  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  previewImage.compressToJpeg(croppingRect, 80, outputStream);
  byte[] bytes = outputStream.toByteArray();
  outputStream.close();
  return bytes;
}
 
開發者ID:XecureIT,項目名稱:PeSanKita-android,代碼行數:20,代碼來源:BitmapUtil.java

示例2: decodeToBitMap

private Bitmap decodeToBitMap(byte[] data) {
	try {
		YuvImage image = new YuvImage(data, ImageFormat.NV21, PREVIEW_WIDTH,
				PREVIEW_HEIGHT, null);
		if (image != null) {
			ByteArrayOutputStream stream = new ByteArrayOutputStream();
			image.compressToJpeg(new Rect(0, 0, PREVIEW_WIDTH, PREVIEW_HEIGHT),
					80, stream);
			Bitmap bmp = BitmapFactory.decodeByteArray(
					stream.toByteArray(), 0, stream.size());
			stream.close();
			return bmp ;
		}
	} catch (Exception ex) {
		Log.e("Sys", "Error:" + ex.getMessage());
	}
	return null;
}
 
開發者ID:JosephPai,項目名稱:WithYou,代碼行數:18,代碼來源:VideoVerify.java

示例3: rgba

@Override
public Mat rgba() {
    if (mPreviewFormat == ImageFormat.NV21)
        Imgproc.cvtColor(mYuvFrameData, mRgba, Imgproc.COLOR_YUV2RGBA_NV21, 4);
    else if (mPreviewFormat == ImageFormat.YV12)
        Imgproc.cvtColor(mYuvFrameData, mRgba, Imgproc.COLOR_YUV2RGB_I420, 4);  // COLOR_YUV2RGBA_YV12 produces inverted colors
    else
        throw new IllegalArgumentException("Preview Format can be NV21 or YV12");

    return mRgba;
}
 
開發者ID:typer9527,項目名稱:FaceDetectDemo,代碼行數:11,代碼來源:JavaCameraView.java

示例4: createYuvType

@RequiresApi(18)
public static Type createYuvType(RenderScript rs, int x, int y, int yuvFormat) {
    boolean supported = yuvFormat == ImageFormat.NV21 || yuvFormat == ImageFormat.YV12;
    if (Build.VERSION.SDK_INT >= 19) {
        supported |= yuvFormat == ImageFormat.YUV_420_888;
    }
    if (!supported) {
        throw new IllegalArgumentException("invalid yuv format: " + yuvFormat);
    }
    return new Type.Builder(rs, createYuvElement(rs)).setX(x).setY(y).setYuvFormat(yuvFormat)
            .create();
}
 
開發者ID:lydia-schiff,項目名稱:hella-renderscript,代碼行數:12,代碼來源:RsUtil.java

示例5: frameSize

public static int frameSize(int width, int height, int imageFormat) {
  if (imageFormat != ImageFormat.NV21) {
    throw new UnsupportedOperationException("Don't know how to calculate "
        + "the frame size of non-NV21 image formats.");
  }
  return (width * height * ImageFormat.getBitsPerPixel(imageFormat)) / 8;
}
 
開發者ID:Piasy,項目名稱:AppRTC-Android,代碼行數:7,代碼來源:CameraEnumerationAndroid.java

示例6: decodeToBitMap

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;
}
 
開發者ID:FacePlusPlus,項目名稱:MegviiFacepp-Android-SDK,代碼行數:15,代碼來源:ConUtil.java

示例7: SrsEncoder

public SrsEncoder(SrsFlvMuxer flvMuxer, SrsMp4Muxer mp4Muxer) {
    this.flvMuxer = flvMuxer;
    this.mp4Muxer = mp4Muxer;

    mVideoColorFormat = chooseVideoEncoder();
    if (mVideoColorFormat == MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar) {
        VFORMAT = ImageFormat.YV12;
    } else if (mVideoColorFormat == MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar) {
        VFORMAT = ImageFormat.NV21;
    } else {
        throw new IllegalStateException("Unsupported color format!");
    }
}
 
開發者ID:lisnstatic,項目名稱:live_master,代碼行數:13,代碼來源:SrsEncoder.java

示例8: NV21ToRGBABitmap

@SuppressLint("NewApi")
public static Bitmap NV21ToRGBABitmap(byte []nv21, int width, int height, Context context) {
	
	TimingLogger timings = new TimingLogger(TIMING_LOG_TAG, "NV21ToRGBABitmap");
	
	Rect rect = new Rect(0, 0, width, height);
	
	try {
		Class.forName("android.renderscript.Element$DataKind").getField("PIXEL_YUV");
		Class.forName("android.renderscript.ScriptIntrinsicYuvToRGB");
    	byte[] imageData = nv21;
    	if (mRS == null) {
    		mRS = RenderScript.create(context);
    		mYuvToRgb = ScriptIntrinsicYuvToRGB.create(mRS, Element.U8_4(mRS));
    		Type.Builder tb = new Type.Builder(mRS, Element.createPixel(mRS, Element.DataType.UNSIGNED_8, Element.DataKind.PIXEL_YUV));
    		tb.setX(width);
    		tb.setY(height);
    		tb.setMipmaps(false);
    		tb.setYuvFormat(ImageFormat.NV21);
    		ain = Allocation.createTyped(mRS, tb.create(), Allocation.USAGE_SCRIPT);
    		timings.addSplit("Prepare for ain");
    		Type.Builder tb2 = new Type.Builder(mRS, Element.RGBA_8888(mRS));
    		tb2.setX(width);
    		tb2.setY(height);
    		tb2.setMipmaps(false);
    		aOut = Allocation.createTyped(mRS, tb2.create(), Allocation.USAGE_SCRIPT & Allocation.USAGE_SHARED);
    		timings.addSplit("Prepare for aOut");
    		bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    		timings.addSplit("Create Bitmap");
		}
    	ain.copyFrom(imageData);
		timings.addSplit("ain copyFrom");
		mYuvToRgb.setInput(ain);
		timings.addSplit("setInput ain");
		mYuvToRgb.forEach(aOut);
		timings.addSplit("NV21 to ARGB forEach");
		aOut.copyTo(bitmap);
		timings.addSplit("Allocation to Bitmap");
	} catch (Exception e) {
		YuvImage yuvImage = new YuvImage(nv21, ImageFormat.NV21, width, height, null);
		timings.addSplit("NV21 bytes to YuvImage");
		
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
        yuvImage.compressToJpeg(rect, 90, baos);
        byte[] cur = baos.toByteArray();
        timings.addSplit("YuvImage crop and compress to Jpeg Bytes");
        
        bitmap = BitmapFactory.decodeByteArray(cur, 0, cur.length);
        timings.addSplit("Jpeg Bytes to Bitmap");
	}
	
   	timings.dumpToLog();
   	return bitmap;
}
 
開發者ID:zhangyaqiang,項目名稱:Fatigue-Detection,代碼行數:54,代碼來源:STUtils.java

示例9: prepareVideo

/**
 * Call this method before use @startStream. If not you will do a stream without video.
 * NOTE: Rotation with encoder is silence ignored in some devices.
 *
 * @param width resolution in px.
 * @param height resolution in px.
 * @param fps frames per second of the stream.
 * @param bitrate H264 in kb.
 * @param hardwareRotation true if you want rotate using encoder, false if you want rotate with
 * software if you are using a SurfaceView or TextureView or with OpenGl if you are using
 * OpenGlView.
 * @param rotation could be 90, 180, 270 or 0 (Normally 0 if you are streaming in landscape or 90
 * if you are streaming in Portrait). This only affect to stream result.
 * NOTE: Rotation with encoder is silence ignored in some devices.
 * @return true if success, false if you get a error (Normally because the encoder selected
 * doesn't support any configuration seated or your device hasn't a H264 encoder).
 */
public boolean prepareVideo(int width, int height, int fps, int bitrate, boolean hardwareRotation,
    int rotation) {
  if (onPreview) {
    stopPreview();
    onPreview = true;
  }
  int imageFormat = ImageFormat.NV21; //supported nv21 and yv12
  if (openGlView == null) {
    cameraManager.prepareCamera(width, height, fps, imageFormat);
    return videoEncoder.prepareVideoEncoder(width, height, fps, bitrate, rotation,
        hardwareRotation, FormatVideoEncoder.YUV420Dynamical);
  } else {
    return videoEncoder.prepareVideoEncoder(width, height, fps, bitrate, rotation,
        hardwareRotation, FormatVideoEncoder.SURFACE);
  }
}
 
開發者ID:pedroSG94,項目名稱:rtmp-rtsp-stream-client-java,代碼行數:33,代碼來源:Camera1Base.java

示例10: run

@Override
public void run() {
	int[] newPicLuma = ImageCodec.N21toLuma(rawNewPic, width, height);
	if (rawOldPic == null) {
		newBitmap = ImageCodec.lumaToBitmapGreyscale(newPicLuma, width, height);
		lastBitmap = newBitmap;
	} else {
	    int[] oldPicLuma = ImageCodec.N21toLuma(rawOldPic, width, height);
		detector = new LuminanceMotionDetector();
		detector.setThreshold(motionSensitivity);
		List<Integer> changedPixels = 
				detector.detectMotion(oldPicLuma, newPicLuma, width, height);
		hasChanged = false;

		int[] newPic = ImageCodec.lumaToGreyscale(newPicLuma, width, height);
		if (changedPixels != null) {
			hasChanged = true;
			for (int changedPixel : changedPixels) {
				newPic[changedPixel] = Color.YELLOW;
			}
		}

		lastBitmap = ImageCodec.lumaToBitmapGreyscale(oldPicLuma, width, height);
		newBitmap = Bitmap.createBitmap(newPic, width, height, Bitmap.Config.RGB_565);

		if (hasChanged) {
			YuvImage image = new YuvImage(rawNewPic, ImageFormat.NV21, width, height, null);
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			image.compressToJpeg(
					new Rect(0, 0, image.getWidth(), image.getHeight()), 90,
					baos);

			byte[] imageBytes = baos.toByteArray();
			rawBitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
			// Setting post rotate to 90
			Matrix mtx = new Matrix();
			mtx.postRotate(-90);
			// Rotating Bitmap
			rawBitmap = Bitmap.createBitmap(rawBitmap, 0, 0, width, height, mtx, true);
		}
		else
		{
			rawBitmap = null;
		}
	}
	
	Log.i("MotionAsyncTask", "Finished processing, sending results");
	handler.post(new Runnable() {
		
		public void run() {
			for (MotionListener listener : listeners) {
				Log.i("MotionAsyncTask", "Updating back view");
				listener.onProcess(
						lastBitmap,
						newBitmap,
						rawBitmap,
						hasChanged);
			}
			
		}
	});
}
 
開發者ID:guardianproject,項目名稱:haven,代碼行數:62,代碼來源:MotionAsyncTask.java

示例11: NV21toJPEG

private static byte[] NV21toJPEG(byte[] nv21, int width, int height) {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    YuvImage yuv = new YuvImage(nv21, ImageFormat.NV21, width, height, null);
    yuv.compressToJpeg(new Rect(0, 0, width, height), 100, out);
    return out.toByteArray();
}
 
開發者ID:InnoFang,項目名稱:FamilyBond,代碼行數:6,代碼來源:ImageUtil.java


注:本文中的android.graphics.ImageFormat.NV21屬性示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。