Tôi đã tạo một ứng dụng chụp và lưu ảnh. Tôi có bản xem trước và lớp phủ ở đầu bản xem trước đó. Lớp phủ xác định một hình vuông (khu vực xung quanh quảng trường cho thấy chế độ xem trước một tối hơn chút), như bạn có thể nhìn thấy trong hình:Android Camera - Làm thế nào tôi có thể lấy một "hình chữ nhật" cụ thể từ mảng byte?
gì tôi cần phải làm là để trích xuất các phần của hình ảnh nơi hình vuông là. Hình vuông được định nghĩa như sau:
Rect frame = new Rect(350,50,450,150);
Tôi có thể làm như thế nào? tôi có mảng byte (byte [] dữ liệu) mà tôi có thể lưu, nhưng tôi muốn thay đổi ứng dụng để chỉ có diện tích hình vuông sẽ được lưu.
Edit: tôi đã thử như sau:
int[] pixels = new int[100000];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data.length);
bitmap.getPixels(pixels, 0, 480, 350, 50, 100, 100);
bitmap = Bitmap.createBitmap(pixels, 0, 100, 100, 100, Config.ARGB_4444);
bitmap.compress(CompressFormat.JPEG, 0, bos);
byte[] square = bos.toByteArray();
và sau đó viết mảng "vuông" vào một tập tin mới ... Vấn đề là tôi nhận được một bức tranh làm bằng dây chuyền ... có là một vấn đề với việc chuyển đổi mà tôi đã thực hiện
giải pháp sử thi cực đơn giản ... http://stackoverflow.com/a/17733530/294884 – Fattie
@Eyal Vì vậy, bạn chỉ muốn cắt khu vực hình chữ nhật từ byte [] mà không lưu nó ở giữa? – ashishdhiman2007