- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经设法创建了一个 android.graphics.Bitmap,并且我通过 SetPixels 命令成功地填充了它。
问题是我从 RGBA 数据开始。然后我创建了一个 jintArray。然后我调用 SetIntArray(有效地将数据存储到缓冲区中)。然后,最后,我调用 setPixels 来实际设置像素(这可能会导致另一个副本)。
这样做的一个大问题是,无论我使用 R8G8B8A8、R5G6B5 还是 A8,我仍然必须将像素数据转换为 R8G8B8A8 数据。
理想情况下,我想要一种只使用一个副本来填充缓冲区的方法,并且允许我在不进行像素格式转换的情况下执行此操作。
有什么方法可以直接获取位图中包含的缓冲区数据吗?我看到 JNI 中有一个函数 GetDirectBufferAddress,但我能找到的文档表明它仅限于 java.nio.buffer。我可以使用此功能直接获取像素数据吗?也许通过获取 Bitmap 类使用的内部缓冲区?
我使用它来创建全局引用的 Java.nio.buffer 的唯一方法是每次我想更新时,将我的像素数据复制到其中,然后使用 copyPixelsFromBuffer 吗?这仍然涉及 2 个副本,但至少可以消除像素格式更改。这会比我已经在使用的方法更有效吗?
还有更好的方法吗?
顺便说一句,我AM知道我可以使用
提前干杯!
câu trả lời hay nhất
这是一个肮脏但有效的解决方案,适用于 Android 1.5 到 4.0。代码在 C++ 中。
//decls of some partial classes from Skia library
class SkRefCnt{
công cộng:
virtual ~SkRefCnt(){}
riêng tư:
mutable int fRefCnt;
};
//----------------------------
class SkPixelRef: public SkRefCnt{
công cộng:
virtual class Factory getFactory() const;
virtual void flatten(class SkFlattenableWriteBuffer&) const;
protected:
virtual void* onLockPixels(class SkColorTable**) = 0;
virtual void onUnlockPixels() = 0;
công cộng:
void *GetPixels(){
SkColorTable *ct;
return onLockPixels(&ct);
}
};
jobject java_bitmap; //your Bitmap object
jclass java_bitmap_class = env.GetObjectClass(java_bitmap);
class SkBitmap;
SkBitmap *sk_bitmap = (SkBitmap*)env.CallIntMethod(java_bitmap, env.GetMethodID(java_bitmap_class, "ni", "()I"));
SkPixelRef *sk_pix_ref;
sk_pix_ref = (SkPixelRef*)((int*)sk_bitmap)[1];
// get pointer to Bitmap's pixel memory, and lenght of single line in bytes
int buffer_pitch = env.CallIntMethod(java_bitmap, env.GetMethodID(java_bitmap_class, "getRowBytes", "()I"));
void *buffer = sk_pix_ref->GetPixels();
关于java - 从 C 尽快填充 Android 位图中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774037/
Câu hỏi dành cho người mới bắt đầu về Android. OK, tôi đã ghi thành công vào tập tin. Ví dụ. //Lấy tên file String filename = getResources().getString(R.string.filename
Tôi đã lưu cùng một hình ảnh vào /data/data/mypackage/img/ và bây giờ tôi muốn hiển thị toàn màn hình này, tôi đã thử sử dụng ACTION_VIEW để hiển thị chương trình tiêu chuẩn Android nhưng nó không đến từ /data/dat
Tôi đang sử dụng Xcode 9, Swift 4. Tôi đang cố gắng hiển thị hình ảnh trong ImageView từ một URL bằng mã sau: func getImageFromUrl(sourceUrl: String) -> UII
Tôi gặp sự cố khi cài đặt genymotion trên Ubuntu của mình. Chủ yếu là tôi không thể gỡ lỗi cơ sở dữ liệu của mình vì tôi không thể xem nội dung của thư mục /data/ thông qua DBMS trong Eclipse và adb trong shell. Không hiển thị
Tôi đang cố gắng đăng một số dữ liệu JSON bằng PHP. Nhưng đã xảy ra sự cố. Đây là html của tôi -- {% for x in sets %}
Tôi quan sát thấy kết quả khác nhau giữa hai phương pháp. Tại sao lại thế này? Tôi biết chuyện gì đang xảy ra trên lm nhưng không thể hiểu chuyện gì đang xảy ra trên tslm. > thư viện(dự báo) > set.seed(2) > tts lm(t
Tôi không chắc tại sao điều này lại xảy ra! Tôi có một lớp được sử dụng bởi spring data elasticsearch và spring data jpa, nhưng khi tôi thử chạy ứng dụng của mình thì tôi gặp lỗi. Đã tạo lỗi
Trong sơ đồ thuần chay này, nếu tôi tải xuống và chuyển đổi Flare-dependency.json bằng cách sử dụng lệnh jq thành csv sau, jq -r '(map(keys) | add | Unique) as
Tôi đang gửi một dự án trong đó tôi phải tạo cơ sở dữ liệu mysql bằng các bảng. Mọi thứ đều đang diễn ra từ phía tôi, vì vậy tôi chỉ muốn kiểm tra cách gửi tất cả các tệp zip của mình cho một người nào đó bằng một máy tính khác. Về cơ bản, làm cách nào để tạo tệp cơ sở dữ liệu của tôi cho một máy tính khác,
Tôi có một ứng dụng ghi tệp văn bản vào bộ nhớ trong. Tôi muốn nhìn kỹ hơn vào máy tính của tôi. Tôi đã chạy Toast.makeText để hiển thị đường dẫn và nó báo:/data/data/my-bundles nhưng khi tôi truy cập An của Android Studio
Tôi thích tốc độ tải Android bằng trình giả lập Genymotion. Nó có tốc độ rất tốt, nhưng vẫn có một số hiệu suất yếu. Cách truy cập trình giả lập Genymotion từ File Explorer trong Eclipse
Tôi cần thay đổi định dạng của hộp văn bản trong Silverlight. Dữ liệu được ràng buộc thông qua MVVM. Ví dụ: có thuộc tính int, tôi thêm 1 vào giá trị trong setter và gọi OnPropertyChanged
Tôi muốn gửi yêu cầu tới API dữ liệu Youtube nhưng tôi không cần truy cập bất kỳ thông tin người dùng nào. Tôi chỉ muốn duyệt các video công khai và hiển thị video dựa trên cụm từ tìm kiếm. Tôi có thể làm điều này mà không được phép không? Câu trả lời hay nhất YouTube
Tôi đã thiết lập ứng dụng Twilio và tôi muốn gửi thông tin cập nhật cho mọi người nhưng tôi không muốn trả lời từng tin nhắn riêng lẻ. Tôi chỉ muốn họ gọi nếu họ có câu hỏi. Tôi thấy mọi thứ đều hoạt động tốt nhưng tôi muốn hiển thị văn bản đến khi gửi để đảm bảo rằng tôi không bỏ sót bất kỳ câu hỏi nào. Tôi đang sử dụng p
Tôi có một trang web có biểu mẫu (hiện tại nó là HTML đơn giản, nhưng chúng tôi đang chuyển sang JQuery). Quá trình này như sau: chấp nhận đầu vào của người dùng --- 5 số nguyên, gọi dịch vụ mạng thông qua REST, chạy một số phép tính ở phía máy chủ... và tạo ra một
Giả sử chúng ta có một tệp có tên là configure.js, khi nhìn vào bên trong chúng ta thấy: 'use strict'; var profile = { "project": "%Projec
Phần này là phần mở rộng của Câu hỏi trước: Bây giờ tôi có thể trả về thành công dữ liệu JSON từ Bộ điều khiển CI của mình, dữ liệu này trả về: {"results":[{"id://1","Sourc
Có cách nào hiệu quả để xóa tất cả lưu trữ tài liệu của CBL trong ios không? Tôi có một câu hỏi về vấn đề này hoặc nếu có ai biết cách làm cho ứng dụng hoạt động giống như vừa được cài đặt thì điều đó cũng sẽ thực sự hữu ích. Chúng tôi đang nỗ lực đảm bảo rằng việc đăng xuất của chúng tôi thực sự đặt ứng dụng vào
Tôi có ứng dụng Rails giao tiếp với các ứng dụng Rails khác để chèn dữ liệu. Tôi đang sử dụng phương thức jQuery $.post để chèn dữ liệu. Để chèn, các ứng dụng Rails khác của tôi hiển thị 200 OK. Nhưng trong
Tôi đang chạy thử nghiệm đơn vị cho lệnh gọi API phục vụ yêu cầu đăng bài. Tôi đang chuyển nội dung yêu cầu và phải trả lại phản hồi dưới dạng dữ liệu tài khoản. Nhưng tôi chỉ nhận được lỗi xác nhận Lưu ý: Dữ liệu được tìm nạp từ Azure spec.js const accou
Tôi là một lập trình viên xuất sắc, rất giỏi!