Обработка изображений в Custom ImageView и сохранение измененного изображения - PullRequest
4 голосов
/ 20 мая 2011

Я использую Custom ImageView. В его onDraw я делаю некоторую обработку, используя холст, который похож на рисование линии, растровые изображения, основанные на прикосновении пользователя.

Для сохранения полученного снимка, когда пользователь хочет сохранить изображение, мы используем DrawingCache

imageView.setDrawingCacheEnabled(true;
Bitmap.createBitmap(imageView.getDrawingCache(), 0, 0, 
       imageView.getHeight(), imageView.getWidth(),
       matrix, true).compress(CompressFormat.JPEG, 95,
       new FileOutputStream(file));

Конечно, я могу использовать это, чтобы получить фактическое изображение, пока пользователь нажимает сохранить, но изображение не содержит какой-либо обработки, выполненной в imageView.

Bitmap bmp = ((BitmapDrawable)imageView.getDrawable()).getBitmap();

Bitmap.createBitmap(bmp, 0, 0, 
        bmp.getWidth(), bmp.getHeight(),
        matrix, true).compress(CompressFormat.JPEG, 95,
                    new FileOutputStream(file));

Проблема: Размер сохраненного изображения - это размер изображения в полноэкранном режиме, но оно зависит от устройства. Для телефонов с меньшим размером экрана оно уменьшается до 240 X 320.

Вопрос:

а. Можно ли получить изображение приличного размера независимо от размера экрана устройства?

б. Можно ли выполнять обработку изображений непосредственно на изображении, которое используется в Custom ImageView?

Спасибо в ожидании!

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

Вы можете использовать

    Bitmap.createScaledBitmap(Bitmap b, int newWidth, int newHieght, boolean filter);

и для получения растрового изображения из ресурсов используйте

     Bitmap image = BitmapFactory.decodeResource(..)

затем вы можете использовать

    ImageView.setImageBitmap(Bitmap bm)

для установки нового растрового изображения на просмотр изображения

0 голосов
/ 25 мая 2011

Возможно, альтернативой будет использование класса Canvas для отображения некоторых ваших рисунков и изображений: javadoc: android.graphics.Canvas .

Класс ImageView не самый лучший, когда изображения нужно часто обновлять.

Если вы решили придерживаться ImageView, не создавайте растровое изображение, используя размеры ImageView. Сохраните пропорции изображения и составьте растровое изображение в соответствии с необходимыми большими размерами. ImageView уменьшит его (если необходимо), чтобы соответствовать экрану.

...