Для камеры есть коллбеки задания превью, получения картинки, но не понятно одно: у меня есть изображение в камере — делаю тач по какой-либо области — нужно получить область тача (цвет или хотя бы байты с данными). Каким образом? UPD: Возникла проблема с получением картинки с канваса. Делаем так: Canvas canvas = mHolder.lockCanvas(mHolder.getSurfaceFrame()) А что дальше - непонятно. Про канву можно забыть. Массив с изображением мы получаем из коллбека превьюшки для камеры, но получаем всегда null и нагугливаем этот вопрос. Использую метод так: Camera.Size camSize = camera.getParameters().getPictureSize() int[] outBuff = new int[camSize.width * camSize.height] decodeYUV(outBuff, data, camSize.width, camSize.height) Log.d(TAG, "int[]=" + Arrays.toString(outBuff)) В лог ничего не выводится. Итого: Нужно по тачу в превью камеры получить область изображения (в байтах). То есть, делаем тач — получаем кусок картинки на которой был сделан тач.
Ответ Можно использовать YuvImage: @Override public void onPreviewFrame(byte[] data, Camera camera) { Camera.Size previewSize = camera.getParameters().getPreviewSize() YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, previewSize.width, previewSize.height, null) ByteArrayOutputStream baos = new ByteArrayOutputStream() Rect rect = new Rect(0, 0, previewSize.width, previewSize.height) yuvImage.compressToJpeg(rect, 100, baos) byte[] bytes = baos.toByteArray() Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length) // дальше можно получить область касания someImageView.setImageBitmap(Bitmap.createBitmap(bitmap, tapRegionX, tapRegionY, tapRegionWidth, tapRegionHeight)) }