本文整理匯總了Java中android.media.Image.getWidth方法的典型用法代碼示例。如果您正苦於以下問題:Java Image.getWidth方法的具體用法?Java Image.getWidth怎麽用?Java Image.getWidth使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類android.media.Image
的用法示例。
在下文中一共展示了Image.getWidth方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: imageAvailable
import android.media.Image; //導入方法依賴的package包/類
/**
* 圖像可用時截屏
*
* @param reader
* @param path
*@param callback @return
*/
private void imageAvailable(ImageReader reader, String path, IRecordShotCallback callback) {
mImageReaderLock.lock();
try{
Image image = reader.acquireLatestImage();
if(image == null) return;
int width = image.getWidth();
int height = image.getHeight();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
image.close();
//需要在這裏釋放圖片否則會截取很多圖片
release();
saveBitmap(path, bitmap, callback);
}finally {
mImageReaderLock.unlock();
}
}
示例2: decodeToBitmap
import android.media.Image; //導入方法依賴的package包/類
private Bitmap decodeToBitmap(final Image img) {
Image.Plane[] planes = img.getPlanes();
if (planes[0].getBuffer() == null) {
return null;
}
int width = img.getWidth();
int height = img.getHeight();
int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap bitmap = Bitmap.createBitmap(
width + rowPadding / pixelStride, height,
Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(planes[0].getBuffer());
img.close();
return Bitmap.createBitmap(bitmap, 0, 0, width, height, null, true);
}
示例3: extract
import android.media.Image; //導入方法依賴的package包/類
/**
* Extracts the Y-Plane from the YUV_420_8888 image to creates a IntensityPlane.
* The actual plane data will be copied into the new IntensityPlane object.
*
* @throws IllegalArgumentException if the provided images is not in the YUV_420_888 format
*/
@NonNull
public static IntensityPlane extract(@NonNull Image img) {
if (img.getFormat() != ImageFormat.YUV_420_888) {
throw new IllegalArgumentException("image format must be YUV_420_888");
}
Image.Plane[] planes = img.getPlanes();
ByteBuffer buffer = planes[0].getBuffer();
byte[] yPlane = new byte[buffer.remaining()];
buffer.get(yPlane);
int yRowStride = planes[0].getRowStride();
return new IntensityPlane(img.getWidth(), img.getHeight(), yPlane, yRowStride);
}
示例4: yuvToBgr
import android.media.Image; //導入方法依賴的package包/類
public static Mat yuvToBgr(Image image, Mat yuvMat) {
Mat bgrMat = new Mat(image.getHeight(), image.getWidth(), CvType.CV_8UC4);
//Log.d("TESTCALL", bgrMat.rows() + " " + bgrMat.cols());
Imgproc.cvtColor(yuvMat, bgrMat, Imgproc.COLOR_YUV2BGR_I420);
//Log.d("TESTCALL", yuvMat.rows() + " " + yuvMat.cols());
return bgrMat;
}
示例5: onFrameData
import android.media.Image; //導入方法依賴的package包/類
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onFrameData(final Image image, final Runnable postProcessedTask) {
final int width = image.getWidth();
final int height = image.getHeight();
if (mGLRgbaBuffer == null) {
mGLRgbaBuffer = ByteBuffer.allocateDirect(width * height * 4);
}
if (mGLYuvBuffer == null) {
// 16 bytes alignment
int bufHeight = (width * mGLRender.getFrameWidth() / mGLRender.getFrameHeight())
& 0xfffffff0;
mGLYuvBuffer = ByteBuffer.allocateDirect(width * bufHeight * 3 / 2);
}
if (!mGLRender.isBusyDrawing()) {
RgbYuvConverter.image2rgba(image, mGLRgbaBuffer.array());
mGLRender.scheduleDrawFrame(mGLRgbaBuffer, width, height, () -> {
if (!mGLRender.isEnableFilter() && !mGLRender.isPaused()) {
sendNormalImage(image);
}
postProcessedTask.run();
});
} else {
postProcessedTask.run();
}
}
示例6: GetBitmapFromImageReader
import android.media.Image; //導入方法依賴的package包/類
/**
* Retrieve Bitmap with specific format from ImageReader.
*
* @param imageReader the image reader
* @return bitmap
*/
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public static Bitmap GetBitmapFromImageReader(ImageReader imageReader) {
Bitmap bitmap;
//get image buffer
Image image = imageReader.acquireLatestImage();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
int pixelStride = planes[0].getPixelStride();
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * image.getWidth();
// create bitmap
bitmap = Bitmap.createBitmap(image.getWidth() + rowPadding / pixelStride, image.getHeight(), Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
image.close();
return bitmap;
}
示例7: _onSingleBarcode
import android.media.Image; //導入方法依賴的package包/類
private void _onSingleBarcode(String barcode, Point[] points, final Image source, final BarcodeDetectedListener listener, Handler callbackHandler) {
if (listener != null) {
final BarcodeInfo bc = new BarcodeInfo(barcode, points);
final byte[] serialized = (source == null) ? null : ImageDecoder.Serialize(source);
final int width = (source == null) ? 0 : source.getWidth();
final int height = (source == null) ? 0 : source.getHeight();
final int format = (source == null) ? ImageFormat.UNKNOWN : source.getFormat();
callbackHandler.post(
new Runnable() {
@Override
public void run() {
listener.onSingleBarcodeAvailable(bc, serialized, format, width, height);
}
}
);
}
}
示例8: _onMultipleBarcodes
import android.media.Image; //導入方法依賴的package包/類
private void _onMultipleBarcodes(final Barcode[] barcodes, final Image source, final MultipleBarcodesDetectedListener listener, Handler callbackHandler) {
if (listener != null) {
final byte[] serialized = (source == null) ? null : ImageDecoder.Serialize(source);
final int width = (source == null) ? 0 : source.getWidth();
final int height = (source == null) ? 0 : source.getHeight();
final int format = (source == null) ? ImageFormat.UNKNOWN : source.getFormat();
callbackHandler.post(
new Runnable() {
@Override
public void run() {
listener.onMultipleBarcodeAvailable(_convert(barcodes), serialized, format, width, height);
}
}
);
}
}
示例9: SequentialIterator
import android.media.Image; //導入方法依賴的package包/類
public SequentialIterator(Image image, Rect area, boolean duplicateBuffer) {
super(image, area, duplicateBuffer);
Image.Plane plane = image.getPlanes()[0];
int pixelStride = plane.getPixelStride();
mRowStride = plane.getRowStride();
mWidth = area.width();
mHeight = area.height();
int rowPadding = mRowStride - pixelStride * image.getWidth();
mSkipPerRow = rowPadding + (image.getWidth() - mWidth) * pixelStride;
int offset = mIterateArea.top * mRowStride + mIterateArea.left * pixelStride;
mByteBuffer.position(offset);
}
示例10: ConcurrentImageColorIterator
import android.media.Image; //導入方法依賴的package包/類
public ConcurrentImageColorIterator(Image image, Rect area) {
Image.Plane plane = image.getPlanes()[0];
mByteBuffer = plane.getBuffer();
mImageWidth = image.getWidth();
mImageHeight = image.getHeight();
mIterateArea = area;
mAreaWidth = area.width();
mAreaHeight = area.height();
}
開發者ID:feifadaima,項目名稱:https-github.com-hyb1996-NoRootScriptDroid,代碼行數:10,代碼來源:ConcurrentColorIterator.java
示例11: toBitmap
import android.media.Image; //導入方法依賴的package包/類
public static Bitmap toBitmap(Image image) {
Image.Plane plane = image.getPlanes()[0];
ByteBuffer buffer = plane.getBuffer();
buffer.position(0);
int pixelStride = plane.getPixelStride();
int rowPadding = plane.getRowStride() - pixelStride * image.getWidth();
Bitmap bitmap = Bitmap.createBitmap(image.getWidth() + rowPadding / pixelStride, image.getHeight(), Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
return bitmap;
}
示例12: pixel
import android.media.Image; //導入方法依賴的package包/類
public static int pixel(Image image, int x, int y) {
int originX = x;
int originY = y;
ScreenMetrics metrics = new ScreenMetrics(image.getWidth(), image.getHeight());
x = metrics.rescaleX(x);
y = metrics.rescaleY(y);
Image.Plane plane = image.getPlanes()[0];
int offset = y * plane.getRowStride() + x * plane.getPixelStride();
int c = plane.getBuffer().getInt(offset);
Log.d("Images", String.format(Locale.getDefault(), "(%d, %d)→(%d, %d)", originX, originY, x, y));
return (c & 0xff000000) + ((c & 0xff) << 16) + (c & 0x00ff00) + ((c & 0xff0000) >> 16);
}
示例13: screenShot
import android.media.Image; //導入方法依賴的package包/類
public Bitmap screenShot() {
log.d("screenShot " + imageReader);
Image image = imageReader.acquireLatestImage(); //獲取緩衝區中的圖像,關鍵代碼
if (image == null)
return null;
boolean b = true;
if (b) {
int width = image.getWidth();
int height = image.getHeight();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
//每個像素的間距
int pixelStride = planes[0].getPixelStride();
//總的間距
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height,
Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
image.close();
return bitmap;
}
return null;
}
示例14: convertYuv420ToBitmap
import android.media.Image; //導入方法依賴的package包/類
private static Bitmap convertYuv420ToBitmap(Image image) {
RenderScript rs = mRenderScript;
final int width = image.getWidth();
final int height = image.getHeight();
// prepare input Allocation for RenderScript
Type.Builder inType = new Type.Builder(rs, Element.U8(rs)).setX(width).setY(height).setYuvFormat(ImageFormat.YV12);
Allocation inAlloc = Allocation.createTyped(rs, inType.create(), Allocation.USAGE_SCRIPT);
byte[] rawBuffer = new byte[inAlloc.getBytesSize()];
int lumaSize = width * height;
int chromaSize = (width / 2) * (height / 2);
Image.Plane[] planes = image.getPlanes();
planes[0].getBuffer().get(rawBuffer, 0, lumaSize);
planes[1].getBuffer().get(rawBuffer, lumaSize, chromaSize);
planes[2].getBuffer().get(rawBuffer, lumaSize + chromaSize, chromaSize);
inAlloc.copyFromUnchecked(rawBuffer);
// prepare output Allocation for RenderScript
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Allocation outAlloc = Allocation.createFromBitmap(rs, bmp, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT | Allocation.USAGE_SHARED);
// convert YUV to RGB colorspace
ScriptC_yuv2rgb converter = new ScriptC_yuv2rgb(rs);
converter.set_gYUV(inAlloc);
converter.forEach_convert(outAlloc);
outAlloc.copyTo(bmp);
return bmp;
}
示例15: doInBackground
import android.media.Image; //導入方法依賴的package包/類
@Override
protected Bitmap doInBackground(Image... params) {
if (params == null || params.length < 1 || params[0] == null) {
L.e(" params is null ...");
return null;
}
Image image = params[0];
int width = image.getWidth();
int height = image.getHeight();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
//每個像素的間距
int pixelStride = planes[0].getPixelStride();
//總的間距
int rowStride = planes[0].getRowStride();
image.close();
int rowPadding = rowStride - pixelStride * width;
Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
image.close();
compressAndWrite(bitmap);
return null;
}