2013-06-03 43 views
8

Tôi đang tìm thư viện hoặc một số ý tưởng về cách tôi có thể tải hình ảnh theo các phần từ đĩa hoặc url thẳng vào đĩa rồi ram. Vì vậy, hai cách tôi thấy rằng điều này có thể được thực hiện là tải toàn bộ hình ảnh vào đĩa bằng cách đọc và ghi nó từ url trực tiếp bằng cách sử dụng ram chỉ cho bộ đệm sau đó khi hình ảnh trên đĩa một số cách tạo bitmap của chỉ các bộ phận của hình ảnh, theo cách đó tôi KHÔNG tải tất cả và đặt chúng trong một ListView.Tải hình ảnh cao từ url vào các hình ảnh cản trở toàn bộ hình ảnh tải vào ram

Vấn đề là tôi đang xử lý các hình ảnh cực dài (dài 10K + pixel w/chiều rộng 4-600) và chúng hog nhiều ram nếu nạp tất cả trong một bitmap. Tôi có thể không chỉ quy mô chúng xuống như hướng dẫn android của Google không trong việc xử lý phần bitmap lớn vì kết quả trong một chiều rộng quá nhỏ để đối phó với. Vì vậy, nếu tôi bằng cách nào đó có thể tạo ra bitmap nhỏ bitmap trên đĩa tôi có thể sử dụng chúng bằng cách tải chúng trong một ngăn chặn ListView tải hình ảnh như một toàn bộ thành ram.

Ngay bây giờ, tôi đang chia nhỏ hình ảnh thành hình ảnh từ bitmap và tôi nhận ra rằng không thực sự hoàn thành những gì tôi đang cố gắng làm khi toàn bộ hình ảnh được tải vào bitmap trong bộ nhớ và sau đó được chia nhỏ sau đó GC (Vì vậy, tôi đang sử dụng hết abmount ram anyways). Tôi đang thử nghiệm trên một đầu mới của dòng điện thoại Android và ứng dụng hoạt động tốt, nhưng kích thước heap đạt 80mb + với những hình ảnh lớn hơn tạm thời trong ram vì nó phá vỡ bitmap và điều này sẽ là một vấn đề với các thiết bị có giới hạn heap thấp hơn

+0

Osman tốt hơn nhiều. :) – griegs

Trả lời

1

Nếu bạn đang sử dụng Java, bạn có thể làm việc với InputStreamReaderOutputStreamWriter. Phương pháp đọc() chấp nhận bộ đệm là một trong các tham số, độ dài của nó có thể phù hợp. Tất nhiên bạn có thể tạo một tập tin mới cho mỗi bộ đệm được viết.

Đó có phải là những gì bạn đang tìm kiếm không?

chỉnh sửa cũng không. bạn đã thấy điều này Strange out of memory issue while loading an image to a Bitmap object chưa?

+0

Làm cách nào để biết tôi có bao nhiêu hình ảnh trong mỗi phần, tôi cần phải có các hình có chiều rộng của hình ảnh và chiều cao bất kỳ để tôi có thể đặt chúng trong một listview – Osman

+0

định dạng hình ảnh đầu vào nào bạn xem? – tomasb

+0

xin lỗi tôi đã có một chút bận rộn nhưng tôi đã không thể tìm thấy một phiên bản android comprable để mã của bạn. Cho phép nói png. – Osman

0
  1. Nếu bạn có quyền kiểm soát máy chủ từ nơi bạn đang lấy dữ liệu, ném vào lĩnh vực khác trong trả lời của bạn, như vậy mà nó trả về một thumbnail/hình ảnh nhỏ hơn. Sau đó, máy chủ có thể tạo các hình thu nhỏ được yêu cầu cho bạn mà không làm phiền bạn.

  2. Giải mã bitmap có thể tốn kém, hầu hết các lần. Nếu bạn không thể thay đổi bất kỳ thứ gì trên máy chủ, hãy tải xuống và lưu hình ảnh và sau khi lưu, sẽ tạo hình thu nhỏ tương ứng và lưu chúng cũng. Trong danh sách của bạn, hãy sử dụng hình thu nhỏ. Ngoài ra, lưu các thông tin về những hình ảnh đã được lưu trữ, và hình thu nhỏ của bạn đã có. Điều này có thể trông giống như rất nhiều công việc, nhưng tùy thuộc vào trường hợp sử dụng, điều này có thể là một cách tiếp cận tốt hơn đối phó với hình ảnh lớn.

Sự cố với việc giảm kích thước? Vâng, bạn có thể đưa ra một số loại logic để tạo hình thu nhỏ, dựa trên kích thước ban đầu của hình ảnh. Đối với hình ảnh dài hơn (theo chiều dọc dài hơn), bạn có thể sử dụng BitmpapRegionDecoder (http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html) như @Binh Tran đã đề xuất.

0

Thử có thể mã hóa hình ảnh để tạo kích thước nhỏ.

Các vấn đề liên quan