TakePhoto — это инструмент с открытым исходным кодом для Android, который позволяет получать фотографии (снимать или выбирать из галереи или файлов), обрезать изображения и сжимать их. Последняя версия инструмента — 2.0.4.
Более ранние версии и API описаны в разделе TakePhoto1.0+.
V2.0
GitHub: https://github.com/crazycodeboy/TakePhoto
Предварительный просмотр:
Изображение:
Использование
Есть два способа использования:
Наследование:
Компоновка:
Получение изображений
TakePhoto предоставляет три способа получения изображений: съёмка, выбор из галереи и выбор из файлов.
API:
/**
* Получение изображения из файла (без обрезки)
*/
void onPickFromDocuments();
/**
* Выбор изображения из галереи (без обрезки)
*/
void onPickFromGallery();
/**
* Съёмка изображения (без обрезки) с сохранением в outPutUri
*/
void onPickFromCapture(Uri outPutUri);
Все эти способы также предоставляют соответствующие API для обрезки. Подробнее см.: https://github.com/crazycodeboy/TakePhoto#обрезка-изображений.
Обратите внимание, что разные производители Android могут по-разному настраивать систему, что может привести к тому, что некоторые способы выбора изображений не будут поддерживаться. Чтобы повысить совместимость TakePhoto, инструмент автоматически переключается на другой способ выбора изображений, если выбранный способ не поддерживается.
Обрезка изображений
API:
Также TakePhoto позволяет обрезать уже существующие изображения:
CropOptions — класс конфигурации для обрезки, позволяющий настроить пропорции обрезки, максимальный размер вывода и использование встроенного инструмента обрезки. Пример использования:
CropOptions cropOptions = new CropOptions.Builder().setAspectX(1).setAspectY(1).setWithOwnCrop(true).create();
getTakePhoto().onPickFromDocumentsWithCrop(imageUri, cropOptions);
//или
getTakePhoto().onCrop(imageUri,outPutUri,cropOptions);
Если система не имеет встроенного или стороннего инструмента обрезки, TakePhoto автоматически использует свой собственный инструмент обрезки.
Сжатие изображений
Вы можете выбрать, следует ли сжимать изображения. Просто сообщите инструменту, хотите ли вы включить сжатие и CompressConfig.
API:
getTakePhoto().onEnableCompress(compressConfig, true).onPickFromGalleryWithCrop(imageUri, cropOptions);
При включении сжатия TakePhoto использует CompressImage для сжатия изображений. CompressImage поддерживает изменение размера и качества изображений. По умолчанию CompressImage выполняет двойное сжатие размера и качества.
Можно также сжимать конкретные изображения:
Пример использования:
new CompressImageImpl(compressConfig).compress(picturePath, new CompressImage.CompressListener() {
@Override
public void onCompressSuccess(String imgPath) {//успешное сжатие изображения
}
@Override
public void onCompressFailed(String imagePath, String msg) {//сжатие изображения не удалось
}});
``` **CompressConfig** — это класс конфигурации, используемый для сжатия изображений. Вы можете использовать CompressConfig.Builder для настройки размера и качества изображения после сжатия. Если вы хотите изменить способ сжатия, вы также можете сделать это через CompressConfig.Builder.
## Использование:
```java
CompressConfig compressConfig=new CompressConfig.Builder().setMaxSize(50*1024).setMaxPixel(800).create();
getTakePhoto().onEnableCompress(compressConfig,true).onPickFromGallery();
Рисунок 1. Отчёт о тестировании совместимости.
TakePhotо написан на основе официального API Android и совместим с основными версиями операционной системы. Если у вас возникли проблемы с совместимостью, вы можете создать Issue.
<activity
android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Для удобства использования мы выпустили TakePhoto V2.0.4 на JCenter (если вам интересно, как опубликовать проект на JCenter, см.: «Как легко опубликовать Android library на JCenter»).
Gradle:
compile 'com.jph.takephoto:takephoto_library:2.0.4'
Maven:
<dependency>
<groupId>com.jph.takephoto</groupId>
<artifactId>takephoto_library</artifactId>
<version>2.0.4</version>
<type>pom</type>
</dependency>
Если у вас есть предложения по улучшению TakePhoto или вы хотите внести изменения, приглашаем вас Fork and Pull requests.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )