Я ищу манипулирование изображениями в стиле приложения Google Фото. Я новичок в обработке изображений. Любые сведения о том, как сделать прямоугольник обрезки с изображением того же размера, что и прямоугольник обрезки, вращение (которое поворачивает как изображение, так и прямоугольник обрезки), выпрямление изображения (включая то, как получить такой пользовательский интерфейс с ползунком угла) будут великолепны. Если есть какие-то библиотеки с такими функциями, это тоже будет работать.
Обрезка изображения в стиле приложения Google Фото, выпрямление и панорамирование
Ответы (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
.
Надеюсь это поможет.
Есть некоторая помощь от android sdk. Возможно, это не совсем то, что вы ищете, но для начала стоит попробовать. Посмотрите здесь.
А список доступных эффектов можно посмотреть здесь
http://developer.android.com/reference/android/media/effect/EffectFactory.html