TakePhoto — это открытая библиотека инструментов для Android, которая позволяет получать фотографии с камеры или из галереи и альбома, обрезать и сжимать изображения. Последняя версия библиотеки — 4.0.3.
Более ранние версии и API описаны в разделе TakePhoto2.0+.
Платформа для общения: QQ группа: 556387607 (группа 1, не заполнена).
GitHub: https://github.com/crazycodeboy/TakePhoto.
Gradle:
compile 'com.jph.takephoto:takephoto_library:4.0.3'
Maven:
<dependency>
<groupId>com.jph.takephoto</groupId>
<artifactId>takephoto_library</artifactId>
<version>4.0.3</version>
<type>pom</type>
</dependency>
Скриншоты:
Есть два способа использования TakePhoto:
void takeSuccess(TResult result);
void takeFail(TResult result,String msg);
void takeCancel();
Этот способ прост в использовании и удовлетворяет большинству потребностей. 2. Сборка: реализуйте интерфейсы TakePhoto.TakeResultListener и InvokeListener. Обратитесь к TakePhotoActivity для основных шагов.
Не удалось найти информацию о пользовательском интерфейсе в исходном тексте. Настройка фотоальбома
TakePhoto позволяет не только настраивать параметры, но и интерфейс (UI) приложения. В этой статье мы рассмотрим, как настроить интерфейс инструментов для создания фотоальбомов и обрезки фотографий в TakePhoto.
Настройка панели инструментов
Чтобы настроить панель инструментов (Toolbar) в фотоальбоме TakePhoto, выполните следующие шаги:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/CustomToolbarTheme"
android:background="#ffa352">
</android.support.v7.widget.Toolbar>
Этот код позволяет настроить тему панели инструментов и её цвет фона.
Настройка строки состояния
Для настройки цвета строки состояния (Status Bar) выполните следующие действия:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="multiple_image_select_primaryDark">#212121</color>
</resources>
Здесь вы можете настроить цвет строки состояния.
Настройка текста подсказок
Чтобы изменить текст подсказок в фотоальбоме, добавьте следующий код в файл string.xml в директории res/values:
<resources>
<string name="album_view">Выберите картинку</string>
<string name="image_view">Нажмите для выбора</string>
<string name="add">Готово</string>
<string name="selected">Выбрано</string>
<string name="limit_exceeded">Можно выбрать максимум %d картинок</string>
</resources>
Это позволит вам настроить текст подсказок для фотоальбома.
Настройка инструмента обрезки
Создайте два новых файла с именами crop__activity_crop.xml и crop__layout_done_cancel.xml в каталоге res/layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.soundcloud.android.crop.CropImageView
android:id="@+id/crop_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:background="@drawable/crop__texture"
android:layout_above="@+id/done_cancel_bar" />
<include
android:id="@+id/done_cancel_bar"
android:layout_alignParentBottom="true"
layout="@layout/crop__layout_done_cancel"
android:layout_height="50dp"
android:layout_width="match_parent" />
</RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Crop.DoneCancelBar">
<FrameLayout
android:id="@+id/btn_cancel"
style="@style/Crop.ActionButton">
<TextView style="@style/Crop.ActionButtonText.Cancel" />
</FrameLayout>
<FrameLayout
android:id="@+id/btn_done"
style="@style/Crop.ActionButton">
<TextView style="@style/Crop.ActionButtonText.Done" />
</FrameLayout>
</LinearLayout>
Эти файлы позволяют настроить внешний вид инструмента обрезки.
Получение изображений
В TakePhoto можно получить изображения тремя способами:
Каждый из этих способов имеет свой API. Например, для получения изображения из файла используется метод onPickFromDocuments().
Обрезка изображений
Также в TakePhoto есть возможность обрезать полученные изображения. Для этого используются соответствующие методы API, такие как onPickFromCaptureWithCrop() и onPickMultipleWithCrop(). Вот перевод текста на русский язык:
CropOptions
CropOptions — это класс конфигурации, используемый для обрезки. С его помощью можно настроить пропорции обрезки изображения, максимальный размер вывода и использовать ли собственный инструмент обрезки TakePhoto.
Использование:
CropOptions cropOptions=new CropOptions.Builder().setAspectX(1).setAspectY(1).setWithOwnCrop(true).create();
getTakePhoto().onPickFromDocumentsWithCrop(imageUri,cropOptions);
//или
getTakePhoto().onCrop(imageUri,outPutUri,cropOptions);
Примечание:
Поскольку разные производители Android-устройств по-разному настраивают систему, возможно, в системе нет встроенного или стороннего инструмента обрезки. Чтобы повысить совместимость TakePhoto, если в системе отсутствует встроенный или сторонний инструмент обрезки, TakePhoto автоматически переключится на использование собственного инструмента обрезки TakePhoto для выполнения обрезки.
Кроме того, TakePhoto 4.0+ поддерживает указание использования собственного альбома TakePhoto, например:
takePhoto.setTakePhotoOptions(new TakePhotoOptions.Builder().setWithOwnGallery(true).create());
Подробности см. в Demo.
Вы можете выбрать, следует ли сжимать изображение. Для этого нужно сообщить ему, хотите ли вы включить функцию сжатия и CompressConfig.
/**
* Включить сжатие изображения
* @param config Конфигурация сжатия изображения
* @return
*/
void onEnableCompress(CompressConfig config,boolean showCompressDialog);
Использование:
TakePhoto takePhoto=getTakePhoto();
takePhoto.onEnableCompress(compressConfig,true);
takePhoto.onPickFromGallery();
Если вы включили сжатие изображений, TakePhoto будет использовать CompressImage для сжатия изображений. CompressImage в настоящее время поддерживает сжатие размера и качества изображения. По умолчанию CompressImage включает двойное сжатие размера и качества.
Кроме того, вы также можете обрезать и сжать конкретное изображение:
Использование:
new CompressImageImpl(compressConfig,result.getImages(), new CompressImage.CompressListener() {
@Override
public void onCompressSuccess(ArrayList<TImage> images) {
//успешное сжатие изображения
}
@Override
public void onCompressFailed(ArrayList<TImage> images, String msg) {
//сжатие изображения не удалось
}
}).compress();
CompressConfig — это конфигурация сжатия изображения. Вы можете установить соответствующие параметры для размера и качества после сжатия с помощью CompressConfig.Builder. Если вы хотите изменить способ сжатия, вы можете сделать это с помощью CompressConfig.Builder.
Использование:
CompressConfig compressConfig=new CompressConfig.Builder().setMaxSize(50*1024).setMaxPixel(800).create();
CompressConfig config=new CompressConfig.Builder()
.setMaxSize(maxSize)
.setMaxPixel(width>=height? width:height)
.create();
takePhoto.onEnableCompress(config,showProgressBar);
LubanOptions option=new LubanOptions.Builder()
.setGear(Luban.CUSTOM_GEAR)
.setMaxHeight(height)
.setMaxWidth(width)
.setMaxSize(maxSize)
.create();
CompressConfig config=CompressConfig.ofLuban(option);
takePhoto.onEnableCompress(config,showProgressBar);
Подробности см. в Demo:CustomHelper.java
В Android 6.0 добавлен «Контроль разрешений во время выполнения». Чтобы справиться с этим изменением, TakePhoto добавляет автоматическое управление разрешениями. Когда TakePhoto обнаруживает необходимость в разрешении, он автоматически запрашивает разрешение. Поэтому вам не нужно беспокоиться о проблемах с использованием разрешений.
В Android N StrictMode был реализован в рамках Android Framework. Приложения могут совместно использовать файлы, что отличается от предыдущих версий. Чтобы адаптироваться к изменениям в Android 7.0, а также чтобы упростить использование TakePhoto, TakePhoto автоматически адаптируется к версии телефона Android. Вам по-прежнему можно передавать Uri типа Uri imageUri = Uri.fromFile(file) в TakePhoto без проблем совместимости.
TakePhotо написан на основе стандартных API Android и совместим с основными версиями Android на рынке. Если у вас возникнут проблемы с совместимостью при использовании, вы можете создать Issue.
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, вы можете создать Issues. Кроме того, мы приглашаем всех внести свой вклад в TakePhoto и приветствуем Fork and Pull requests.
Исправления ошибок
62a6725
) — @Yanqilong
a0a64a59
) — @namezhouyu
Если в вашем проекте включено запутывание кода, вы можете добавить следующий код в файл правил запутывания (например, proguard-rules.pro):
-keep class com.jph.takephoto.** { *; }
-dontwarn com.jph.takephoto.**
-keep class com.darsh.multipleimageselect.** { *; }
-dontwarn com.darsh.multipleimageselect.**
-keep class com.soundcloud.android.crop.** { *; }
-dontwarn com.soundcloud.android.crop.**
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )