Tôi có một hình ảnh lớn quá lớn để được tải vào bộ nhớ nhưng tôi chỉ quan tâm đến một tập hợp các pixel trong hình ảnh lớn đó. Có thể giải mã vào bộ nhớ chỉ tập hợp con pixel này không? Tôi biết rằng trong Android có một lớp trong API để thực hiện chính xác này được gọi là BitmapRegionDecoder là một cái gì đó như thếios Giải mã một phần của hình ảnh
tôi thấy CGDataProviderCreateSequential nhưng nó cần các điểm ảnh thô trong các nhà xây dựng ...
Ngay bây giờ tôi đang làm một cái gì đó như thế này:
UIImage* srcImage = ...;
CFDataRef cgImgDataRef = CGDataProviderCopyData(CGImageGetDataProvider(srcImage.CGImage));//After this call, all pixels are decoded into memory and the app crashes
char* imageData = (char*)CFDataGetBytePtr(cgImgDataRef);
Sự khôn ngoan hiện tại nói rằng cách để làm điều này là cắt hình ảnh của bạn thành các ô và chỉ tải nhẹ các ô hiện đang được hiển thị ở mức thu phóng thích hợp. Chính xác hình ảnh này lớn đến cỡ nào (theo kích thước pixel)? – warrenm
khoảng 4096x3072 nhưng điều là tôi muốn tải một lát hình ảnh lớn trực tiếp vào ứng dụng gl ES mở của tôi. Vì vậy, tôi cần phải trích xuất các pixel cần thiết và gọi glTexImage2D (...) với dữ liệu pixel phụ của tôi – AkademiksQc
Kích thước của ảnh con bạn đang trích xuất luôn giống nhau hay biến đổi? Phạm vi là gì? – warrenm