为啥ImageReader.IOnImageaVailableListener回调要4秒左右,太久了。 var reader = ImageReader.NewInstance(width, height, ImageFormatType.Jpeg, 1);
var outputSurfaces = new List<Surface>(2) { reader.Surface, new Surface(_viewSurface) }; var captureBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture);
captureBuilder.AddTarget(reader.Surface);
captureBuilder.Set(CaptureRequest.ControlMode, new Integer((int)ControlMode.Auto));
SetFlash(captureBuilder); var JpegOrientation = GetJpegOrientation(characteristics);
captureBuilder.Set(CaptureRequest.JpegOrientation, JpegOrientation); //这里是实现IOnImageaVailableListener这个接口的,里面实现了回调方法
var readerListener = new ImageAvailableListener();
readerListener.Photo += (sender, buffer) =>
{
Buffer = buffer;
Photo?.Invoke(this, ImageSource.FromStream(() => new MemoryStream(buffer)));
}; public class ImageAvailableListener : Java.Lang.Object, ImageReader.IOnImageAvailableListener
{
public event EventHandler<byte[]> Photo; public void OnImageAvailable(ImageReader reader)
{
Image image = null; try
{
image = reader.AcquireLatestImage();
var buffer = image.GetPlanes()[0].Buffer;
var imageData = new byte[buffer.Capacity()];
buffer.Get(imageData); Photo?.Invoke(this, imageData);
}
catch (Exception)
{
// ignored
}
finally
{
image?.Close();
}
}
}
var outputSurfaces = new List<Surface>(2) { reader.Surface, new Surface(_viewSurface) }; var captureBuilder = CameraDevice.CreateCaptureRequest(CameraTemplate.StillCapture);
captureBuilder.AddTarget(reader.Surface);
captureBuilder.Set(CaptureRequest.ControlMode, new Integer((int)ControlMode.Auto));
SetFlash(captureBuilder); var JpegOrientation = GetJpegOrientation(characteristics);
captureBuilder.Set(CaptureRequest.JpegOrientation, JpegOrientation); //这里是实现IOnImageaVailableListener这个接口的,里面实现了回调方法
var readerListener = new ImageAvailableListener();
readerListener.Photo += (sender, buffer) =>
{
Buffer = buffer;
Photo?.Invoke(this, ImageSource.FromStream(() => new MemoryStream(buffer)));
}; public class ImageAvailableListener : Java.Lang.Object, ImageReader.IOnImageAvailableListener
{
public event EventHandler<byte[]> Photo; public void OnImageAvailable(ImageReader reader)
{
Image image = null; try
{
image = reader.AcquireLatestImage();
var buffer = image.GetPlanes()[0].Buffer;
var imageData = new byte[buffer.Capacity()];
buffer.Get(imageData); Photo?.Invoke(this, imageData);
}
catch (Exception)
{
// ignored
}
finally
{
image?.Close();
}
}
}
刚接触这一块,想把ImageFormatType.JPEG 改成ImageFormatType.YUV420888,但是改成YUV420888后,就接受不到回调了,肯定是少改了哪里,刚接触这一块,还在理解ing...
刚接触这一块,想把ImageFormatType.JPEG 改成ImageFormatType.YUV420888,但是改成YUV420888后,就接受不到回调了,肯定是少改了哪里,刚接触这一块,还在理解ing...尴尬,我理解错了0...0~~一开始
emmmm 渲染大了 试试将分辨率降低点,一步步的试试,对于创建图片的地方,尽可能选择最小的配置,再升级
刚接触这一块,想把ImageFormatType.JPEG 改成ImageFormatType.YUV420888,但是改成YUV420888后,就接受不到回调了,肯定是少改了哪里,刚接触这一块,还在理解ing...尴尬,我理解错了0...0~~一开始
emmmm 渲染大了 试试将分辨率降低点,一步步的试试,对于创建图片的地方,尽可能选择最小的配置,再升级
能看下我那段代码要怎么改吗,我尝试改成YUV420888,可以预览,但是就接收不到回调了,网上查阅半天相关资料,都没有解决。