Обрезка изображения в стиле приложения Google Фото, выпрямление и панорамирование

Я ищу манипулирование изображениями в стиле приложения Google Фото. Я новичок в обработке изображений. Любые сведения о том, как сделать прямоугольник обрезки с изображением того же размера, что и прямоугольник обрезки, вращение (которое поворачивает как изображение, так и прямоугольник обрезки), выпрямление изображения (включая то, как получить такой пользовательский интерфейс с ползунком угла) будут великолепны. Если есть какие-то библиотеки с такими функциями, это тоже будет работать. Приложение Google Фото – кадрирование/панорамирование/выпрямление изображения


person ms_b    schedule 24.07.2015    source источник


Ответы (2)


В Square есть библиотека для загрузки изображений и работы с ними. Вот некоторые особенности:

- Handling ImageView recycling and download cancelation in an adapter.
- Complex image transformations with minimal memory use.
- Automatic memory and disk caching.

Подробная информация о том, как использовать библиотеку, есть на их сайте. Проверьте это: Picasso

Строка gradle, которую вам нужно добавить:

compile 'com.squareup.picasso:picasso:2.5.2'

Его очень легко использовать. Вот как я загружаю и настраиваю изображение в ImageView в моем примерном приложении:

Picasso.with(mContext).load("http://cdn0.vox-cdn.com/uploads/chorus_asset/file/798874/DSCF1913.0.jpg").fit().centerCrop().into(imageView);

Как видите, здесь я использовал fit().centerCrop(). Это отрегулирует изображение, чтобы оно пропорционально поместилось внутри моего imageView. Вы можете попробовать различные формы преобразования изображений, чтобы лучше соответствовать вашим потребностям.

Вы также можете загружать изображения из папки с возможностью рисования или непосредственно из файла:

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);

EDIT: похоже, я не совсем понял ваш вопрос, когда впервые прочитал его. Вот несколько советов о том, чего вы пытаетесь достичь. Может быть, это не совсем то, что вы хотите, но я думаю, что это может быть началом.

Если вы хотите повернуть изображение, вы можете сделать это с Picasso, используя RequestCreator.rotate(float degrees). Вот документация для RequestCreator.

Что касается обрезки изображений (внутри указанного прямоугольника, как вы показали), есть: обрезка Android.

Или вы можете использовать Преобразования Пикассо и создать такое преобразование, как

CropTransformation(Top, Center, Bottom);

И попросите Пикассо преобразовать изображение вот так:

Picasso.with(mContext).load(R.drawable.demo)
    .transform(transformation).into((ImageView) findViewById(R.id.image));

Кроме того, как сказал @Amit K Saha в своем ответе, вы можете использовать некоторые эффекты Android SDK. Проверьте android.media.effect.

Надеюсь это поможет.

person Danilo Prado    schedule 24.07.2015
comment
как это связано с вопросом? - person Amit K. Saha; 24.07.2015
comment
@ Амит К. Саха, похоже, я не совсем понял его проблему, когда впервые прочитал ее. Я обновил свой ответ несколькими советами о том, чего он пытается достичь. Хотя это может быть не окончательное решение того, что он хочет, я думаю, что это может быть началом. Спасибо, что сообщили мне. - person Danilo Prado; 24.07.2015

Есть некоторая помощь от android sdk. Возможно, это не совсем то, что вы ищете, но для начала стоит попробовать. Посмотрите здесь.

android.media.effect

А список доступных эффектов можно посмотреть здесь

http://developer.android.com/reference/android/media/effect/EffectFactory.html

person Amit K. Saha    schedule 24.07.2015