Android: обрезка изображения до определенного размера - PullRequest
4 голосов
/ 22 февраля 2012

Мое намерение состоит в том, чтобы пользователь выбрал изображение из галереи, а затем приступил к кадрированию. Однако мне нужно, чтобы прямоугольник, который определяет маску обрезки, был привязан к определенному измерению, а затем пользователь просто перемещает его, чтобы отобразить часть изображения.

Есть идеи, как это можно сделать?

Спасибо

Ответы [ 2 ]

15 голосов
/ 22 февраля 2012
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null)
            .setType("image/*")
            .putExtra("crop", "true")
            .putExtra("aspectX", width)
            .putExtra("aspectY", height)
            .putExtra("outputX", width)
            .putExtra("outputY", height)
            .putExtra("scale", true)
            .putExtra("scaleUpIfNeeded", true)
            .putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f))
            .putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
6 голосов
/ 22 февраля 2012

Вам необходимо создать собственный класс ImageView для достижения масштаба и панорамирования изображения, и он может иметь фиксированный прямоугольник image(transparent), наложенный на это изображение.И может создать суб-растровое изображение этого растрового изображения.и сохраните его в файл.

createBitmap(Bitmap source, int x, int y, int width, int height);

Этот метод используется для создания суб-растрового изображения.

http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/

После достижения масштабирования и панорамирования, яне уверен, что createBitmap может создать суб-растровое изображение из видимой части изображения (т. е. часть изображения не будет видна на экране при увеличении), поэтому попробуйте получить drawingCache() из imageView и создать суб-изображениерастровое изображение для того же.

...