Стиль приложения Google Photos для обрезки, выпрямления и панорамирования изображений
Я ищу манипуляции с изображениями в стиле приложения Google Фото. Я новичок в обработке изображений. Любая инструкция о том, как сделать прямоугольник обрезки с изображением того же размера, что и прямоугольник обрезки, вращение (которое поворачивает как изображение, так и прямоугольник обрезки), выпрямление изображения (в том числе способ получения такого пользовательского интерфейса в виде ползунка), будет отличным вариантом. Если есть некоторые библиотеки, которые имеют эти функции, это также будет работать.
2 ответа
В Square есть библиотека для загрузки и воспроизведения изображений. Вот некоторые особенности:
- Handling ImageView recycling and download cancelation in an adapter. - Complex image transformations with minimal memory use. - Automatic memory and disk caching.
На их сайте есть подробная информация о том, как использовать библиотеку. Проверьте это: Пикассо
Линия 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);
РЕДАКТИРОВАТЬ: Похоже, я не полностью понял ваш вопрос, когда я впервые прочитал его. Вот несколько советов о том, чего вы пытаетесь достичь. Может быть, не совсем то, что вы хотите, но я думаю, что это может быть началом.
Если вы хотите повернуть изображение, вы можете сделать это с помощью 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
,
Надеюсь это поможет.
Есть некоторая помощь от Android SDK. Может быть, не совсем то, что вы ищете, но стоит попробовать. Посмотрите здесь.
И список доступных эффектов можно найти здесь
http://developer.android.com/reference/android/media/effect/EffectFactory.html