Ответ 1
Создайте дискету (без hdpi/mdpi etc) в res. Держите выталкиваемый в этой папке. Теперь попробуйте. Это может вам помочь.
Используя этот код:
Drawable blankDrawable = context.getResources().getDrawable(image);
Bitmap blankBitmap=((BitmapDrawable)blankDrawable).getBitmap();
Я получаю растровое изображение, которое масштабируется до плотности контекста, сохраняя физический размер растрового изображения (на основе его значения dpi). Так, например, у меня есть 405x500 битмап (dpi = 96) в качестве ресурса. Но когда я загружаю его на устройство, я получаю изображение 608х750 с плотностью = 240. Я хочу загрузить растровое изображение без масштабирования. Как это сделать?
Этот вопрос очень похож на:
Как создать Drawable из потока без изменения его размера?
Однако это решение не может быть использовано в моем случае, потому что у меня нет входного потока. Все, что у меня есть, это идентификатор ресурса, а метод getDrawable() не имеет параметров для плотности. Как только битмап загружен, слишком поздно - он уже был изменен.
Спасибо.
Создайте дискету (без hdpi/mdpi etc) в res. Держите выталкиваемый в этой папке. Теперь попробуйте. Это может вам помочь.
используйте этот
InputStream is = this.getResources().openRawResource(imageId);
Bitmap originalBitmap = BitmapFactory.decodeStream(is);
imageview.setImageBitmap(originalBitmap);
Когда вы декодируете растровое изображение с помощью
BitmapFactory.decodeResource (Resources res, int id, BitmapFactory.Options opts)
Установите флаг inScaled в BitmapFactory.Options в false сначала.
Пример:
/* Set the options */
Options opts = new Options();
opts.inDither = true;
opts.inPreferredConfig = Bitmap.Config.RGB_565;
opts.inScaled = false; /* Flag for no scalling */
/* Load the bitmap with the options */
bitmapImage = BitmapFactory.decodeResource(context.getResources(),
R.drawable.imageName, opts);
Другим хорошим вариантом может быть размещение растрового изображения в папке ресурса drawable-nodpi
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView image = (ImageView) findViewById(R.id.test_image);
Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
image.setImageBitmap(bMap);
}