对不起我的英语不好。现在我学习了rxJava 1并尝试将byte []转换为Bitmap并将其设置为imageview。但它运作缓慢。我对rxJava的工作是否正确? ps:我比rxJava更加出色,而且asynkTask的工作比较流行,这有多可能?
Observable.just(data)
.map(new Func1() {
@Override
public Bitmap call(byte[] bytes) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inPreferredConfig = Bitmap.Config.RGB_565;
options.inDither = true;
options.inMutable = true;
Bitmap largeBitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
Bitmap bitmap = Bitmap.createScaledBitmap(largeBitmap
, (int) ((float) largeBitmap.getWidth() / 10)
, (int) ((float) largeBitmap.getHeight() / 10)
, true);
if (bitmap.getWidth() > bitmap.getHeight()) {
Matrix matrix = new Matrix();
matrix.postRotate(90); // anti-clockwise by 90 degrees
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
}
float k = (float) bitmap.getWidth() / (float) w_target;
if (w_target < bitmap.getWidth()) {
bitmap = Bitmap.createScaledBitmap(bitmap, w_target, (int) ((float) bitmap.getHeight() / k), true);
}
return createBlackAndWhite(bitmap);
}
})
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1() {
@Override
public void call(Bitmap bitmap) {
imageview.setImageBitmap(bitmap);
}
});