Tôi đang làm việc trên một ứng dụng xử lý hình ảnh cho Android, công nhận ký hiệu âm nhạc từ các hình ảnh được lấy từ các bản nhạc.Có thể cắt một bitmap thành các mẩu nhỏ mà không tải toàn bộ nội dung vào bộ nhớ không?
Tôi đã cố gắng tải toàn bộ hình ảnh vào một Bitmap bằng phương pháp BitmapFactory.decodeFile(imgPath), nhưng vì điện thoại của tôi không có đủ bộ nhớ, tôi nhận được lỗi "Kích thước đống máy ảo". Để giải quyết vấn đề này, tôi muốn cắt hình ảnh đầy đủ thành những phần nhỏ hơn, nhưng tôi không chắc chắn làm thế nào để làm điều đó.
Tôi cũng thấy rằng có thể giảm kích thước bộ nhớ của Bitmap bằng cách sử dụng inSampleSize property của lớp BitmapFactory.Option, nhưng nếu tôi làm điều đó tôi sẽ không nhận được hình ảnh có độ phân giải cao mà tôi cần cho ký hiệu âm nhạc quá trình nhận diện.
Có cách nào để xử lý việc này mà không cần đến NDK không?
là tập tin của bạn thực sự mã hóa như một bitmap? Bạn có thể nén hình ảnh nguồn để nó không lớn không? Đối với âm nhạc, bạn không cần nhiều màu sắc ... Làm thế nào lớn trong byte và độ phân giải là những hình ảnh bạn đang làm việc với? – Matt
Bản đồ bitmap của bạn hay của người dùng? Nếu của bạn, hãy xem xét lưu trữ nó trước khi cắt nhỏ lên, và/hoặc trong ít màu sắc. Nếu người dùng, đây có phải là trường hợp đường biên hoặc đầu vào điển hình không? Nếu đường biên giới, thực hiện xác thực/xử lý lỗi duyên dáng. Nếu điển hình, hãy xem xét lại lựa chọn nền tảng của bạn. –
Bitmap là từ người dùng. Anh ấy sẽ chụp ảnh từ camera di động. Tôi phải sử dụng bitmap lớn nhất có thể bởi vì trong quá trình nhận biết hiệu quả là từ việc này. Cảm ơn bạn đã chỉnh sửa và xin lỗi vì tiếng Anh nghèo nàn của tôi. – OffCS