1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/madaigou-BeautyCamera

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

BeautyCamera

Проект: «Одно нажатие — и камера сделает вас красивым»

@Автор GQ, 23 июня 2018 года

В этом проекте используется функция водяной знак камеры. Также добавлена функция красоты. В процессе реализации были изучены некоторые документы по фильтрам изображений GPUImage.

Ссылки на источники:

Эффектные изображения

1 2 3

Реализация предварительного просмотра с использованием фильтров GPUImage

  • Фильтр красоты:
gpuImage = GPUImage(this)
gpuImage?.setGLSurfaceView(surfaceView)

magicFilterGroup = GPUImageFilterGroup()
magicFilterGroup?.addFilter(GPUImageBeautyFilter())

noMagicFilterGroup = GPUImageFilterGroup()
noMagicFilterGroup?.addFilter(GPUImageFilter())

// Установка фильтра
gpuImage?.setFilter(if (isInMagic) magicFilterGroup else noMagicFilterGroup)
  • Использование GLSurfaceView для отображения предварительного просмотра:
<android.opengl.GLSurfaceView
        android:id="@+id/surfaceView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
  • Установка размера изображения:
parameters.setPictureSize(pictureSize.width, pictureSize.height)
  • Настройка размера предварительного просмотра:
parameters.setPreviewSize(closelySize.width, closelySize.height)
  • Непрерывная фокусировка:
// Непрерывная фокусировка
if (parameters.supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
    parameters.focusMode = Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE
}

Использование Camera.parameters для настройки

  • Проблемы деформации предварительного просмотра при разных разрешениях;
  • Адаптация разрешения предварительного просмотра к разрешению фотографии;
  • Разрешение передней и задней камер.

Установка водяного знака

  • Метод 1: использование canvas для повторного рисования исходного изображения и изображения водяного знака.
// Водяной знак имеет разный размер при разных разрешениях (пока не решено)
private fun getView2Bitmap(): Bitmap {
    ll_waterMarker!!.isDrawingCacheEnabled = true
    var waterBitmapCache = ll_waterMarker.drawingCache
    var waterBitmap = Bitmap.createBitmap(waterBitmapCache, 0, 0, ll_waterMarker.width, ll_waterMarker.height)
    ll_waterMarker.destroyDrawingCache()
    var oriBitmap = (iv_img.drawable as BitmapDrawable).bitmap
    var newb = Bitmap.createBitmap(oriBitmap.width, oriBitmap.height, Bitmap.Config.ARGB_8888);
    var canvas = Canvas(newb)
    canvas.drawBitmap(oriBitmap, 0f, 0f, null)
    canvas.drawBitmap(waterBitmap, 0f, (oriBitmap.height - waterBitmap.height).toFloat() - SizeUtil.dp2px(this, 40f), null)
    canvas.save(Canvas.ALL_SAVE_FLAG);
    canvas.restore();
    return newb
}
  • Способ 2: обрезка Layout для сохранения изображения с водяным знаком.
// Обрезка layout для сохранения фотографии, будет чёрная рамка
private fun getScreenPhoto(waterPhoto: RelativeLayout?): Bitmap {
    waterPhoto!!.isDrawingCacheEnabled = true
    waterPhoto.buildDrawingCache()
    var bitmap: Bitmap? = waterPhoto.drawingCache
    val width = waterPhoto.width
    val height = waterPhoto.height
    val bitmap1 = Bitmap.createBitmap(bitmap!!, 0, 0, width, height)
    waterPhoto.destroyDrawingCache()
return bitmap1
}

Подробнее см. в демо https://gitee.com/madaigou/BeautyCamera.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/madaigou-BeautyCamera.git
git@gitlife.ru:oschina-mirror/madaigou-BeautyCamera.git
oschina-mirror
madaigou-BeautyCamera
madaigou-BeautyCamera
master