Bộ giải mã hình ảnh | Android NDK | Android Developers
API ImageDecoder
của NDK cung cấp một API tiêu chuẩn cho các ứng dụng Android C/C++ để giải mã hình ảnh trực tiếp. Nhà phát triển ứng dụng không cần sử dụng API Java (thông qua JNI) hoặc thư viện giải mã hình ảnh của bên thứ ba nữa. API này cùng với các chức năng mã hoá trong mô-đun Bitmap, cho phép:
- Các ứng dụng và thư viện gốc có thể nhỏ hơn vì không còn phải liên kết thư viện giải mã riêng.
- Các ứng dụng và thư viện tự động hưởng lợi từ các bản cập nhật bảo mật nền tảng cho thư viện giải mã.
- Ứng dụng có thể giải mã hình ảnh trực tiếp vào bộ nhớ do ứng dụng cung cấp. Sau đó, ứng dụng có thể xử lý hậu kỳ dữ liệu về hình ảnh (nếu muốn) và truyền dữ liệu đó đến OpenGL hoặc mã vẽ của ứng dụng.
Trang này miêu tả cách sử dụng API để giải thuật hình ảnh .
Phạm vi cung cấp và khả năng
API
ImageDecoder
có sẵn trên các ứng dụng nhắm mục tiêu đến Android 11 (API cấp 30) trở lên. Quá trình triển khai diễn ra bên trong các tệp sau:Bạn đang đọc: Bộ giải mã hình ảnh | Android NDK | Android Developers
imagedecoder.h
cho bộ giải mãbitmap.h
cho bộ mã hoálibjnigraphics.so
API này tương hỗ những định dạng hình ảnh sau :
- JPEG
- PNG
- GIF
- WebP
- BMP
ICO
- WBMP
- HEIF
Âm bản kỹ thuật số (thông qua SDK DNG)
Để phân phối toàn bộ trường hợp sử dụng hình ảnh thô được giải thuật, API này không phân phối đối tượng người dùng cấp cao hơn như đối tượng người tiêu dùng được tạo ngoài hình ảnh đã giải thuật bên trong khung Java, ví dụ điển hình như :
- Đối tượng
Drawable
.NinePatch
: Nếu xuất hiện trong hình ảnh được mã hoá, thì các đoạn NinePatch sẽ bị bỏ qua.- Mật độ bitmap :
AImageDecoder
không điều chỉnh kích thước tự động dựa trên mật độ màn hình, nhưng cho phép giải mã thành một kích thước khác quaAImageDecoder_setTargetSize()
.- Ảnh động: Chỉ giải mã khung đầu tiên của tệp GIF hoặc WebP động.
Giải mã hình ảnh
Quá trình giải mã bắt đầu bằng một số dạng dữ liệu đầu vào biểu thị hình ảnh đã mã hoá.
AImageDecoder
chấp nhận nhiều loại dữ liệu đầu vào:
AAsset
(trình bày bên dưới)- Chỉ số mô tả tệp
- Vùng đệm
Mã sau đây cho biết cách mở Asset
của hình ảnh từ một tệp, giải mã hình ảnh đó, sau đó xử lý đúng cách bộ giải mã và nội dung. Để xem ví dụ về cách kết xuất hình ảnh được giải mã, hãy xem mẫu ấm trà.
AAssetManager* nativeManager = AAssetManager_fromJava(env, jAssets);
const char* file = // Filename
AAsset* asset = AAssetManager_open(nativeManager, file, AASSET_MODE_STREAMING);
AImageDecoder* decoder;
int result = AImageDecoder_createFromAAsset(asset, &decoder);
if (result != ANDROID_IMAGE_DECODER_SUCCESS) {
// An error occurred, and the file could not be decoded.
}
const AImageDecoderHeaderInfo* info = AImageDecoder_getHeaderInfo(decoder);
int32_t width = AImageDecoderHeaderInfo_getWidth(info);
int32_t height = AImageDecoderHeaderInfo_getHeight(info);
AndroidBitmapFormat format =
(AndroidBitmapFormat) AImageDecoderHeaderInfo_getAndroidBitmapFormat(info);
size_t stride = AImageDecoder_getMinimumStride(decoder); // Image decoder does not
// use padding by default
size_t size = height * stride;
void* pixels = malloc(size);
result = AImageDecoder_decodeImage(decoder, pixels, stride, size);
if (result != ANDROID_IMAGE_DECODER_SUCCESS) {
// An error occurred, and the file could not be decoded.
}
// We’re done with the decoder, so now it’s safe to delete it.
AImageDecoder_delete(decoder);
// The decoder is no longer accessing the AAsset, so it is safe to
// close it.
AAsset_close(asset);
// Draw the pixels somewhere
// Free the pixels when done drawing with them
free(pixels);
Source: https://thomaygiat.com
Category : Kỹ Thuật Số
Chuyển vùng quốc tế MobiFone và 4 điều cần biết – MobifoneGo
Muốn chuyển vùng quốc tế đối với thuê bao MobiFone thì có những cách nào? Đừng lo lắng, bài viết này của MobiFoneGo sẽ giúp…
Cách copy dữ liệu từ ổ cứng này sang ổ cứng khác
Bạn đang vướng mắc không biết làm thế nào để hoàn toàn có thể copy dữ liệu từ ổ cứng này sang ổ cứng khác…
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel Xử lý dữ liệu từ máy chấm công là việc làm vô cùng…
Cách nhanh nhất để chuyển đổi từ Android sang iPhone 11 | https://thomaygiat.com
Bạn đã mua cho mình một chiếc iPhone 11 mới lạ vừa ra mắt, hoặc có thể bạn đã vung tiền và có một chiếc…
Giải pháp bảo mật thông tin trong các hệ cơ sở dữ liệu phổ biến hiện nay
Hiện nay, với sự phát triển mạnh mẽ của công nghệ 4.0 trong đó có internet và các thiết bị công nghệ số. Với các…
4 điều bạn cần lưu ý khi sao lưu dữ liệu trên máy tính
08/10/2020những chú ý khi tiến hành sao lưu dữ liệu trên máy tính trong bài viết dưới đây của máy tính An Phát để bạn…