https://github.com/moo611/opencamera-for-android
android 美颜相机
https://github.com/moo611/opencamera-for-android
android camera filter glsurfaceview grafika opengl opengles
Last synced: 22 days ago
JSON representation
android 美颜相机
- Host: GitHub
- URL: https://github.com/moo611/opencamera-for-android
- Owner: moo611
- Created: 2020-02-17T10:02:10.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-05-30T23:55:00.000Z (almost 2 years ago)
- Last Synced: 2025-04-10T00:17:57.765Z (22 days ago)
- Topics: android, camera, filter, glsurfaceview, grafika, opengl, opengles
- Language: C++
- Homepage:
- Size: 8.05 MB
- Stars: 210
- Watchers: 3
- Forks: 60
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OpenCamera
#### opencamera是一套高性能的相机框架,基于opengles+glsurfaceview,能实现实时滤镜,拍照,录制短视频,美颜磨皮等功能。## 效果图

## 已实现功能
1.拍照
2.录视频
3.美颜,滤镜## 开发计划
1.加入CameraX Api
2.将glsurfaceview变成自定义的textureview渲染
3.离线渲染
4.将opengl java部分的代码变成可移植的c库,便于ios上的移植。## 集成和使用
#### 版本号
[](https://www.jitpack.io/#moo611/OpenCamera)
```gradle
allprojects {
repositories {
...
maven { url 'https://www.jitpack.io' }
}
}
dependencies
{
implementation 'com.github.moo611:OpenCamera:latestversion'
}
//注意在android代码块里添加java8支持!!
```
#### 需要添加jdk 1.8支持
```gradle
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
```#### 注意,由于demo里用的androidX,因此如果您的项目用的是v4或者v7包,会出现manifest不兼容的情况,有三种解决方案
#### (1)升级您的应用到androidX
#### (2)直接导入module的方式导入我的library
#### (3)用1.0.4及以下版本(不建议)#### 添加权限
```xml
```
#### xml布局文件
```xml
```
#### 开启或关闭美颜(默认开启)
```java
mCameraView.enableBeauty(true);
```
#### 美颜程度(0~1)
```java
mCameraView.setBeautyLevel(0.5f);
```
#### 添加滤镜```java
private Listfilters = new ArrayList<>();
...
filters.add(FilterFactory.FilterType.Original);
filters.add(FilterFactory.FilterType.Sunrise);
filters.add(FilterFactory.FilterType.Sunset);
filters.add(FilterFactory.FilterType.BlackWhite);
filters.add(FilterFactory.FilterType.WhiteCat);
filters.add(FilterFactory.FilterType.BlackCat);
filters.add(FilterFactory.FilterType.SkinWhiten);```
#### 切换滤镜
```java
mCameraView.updateFilter(filters.get(pos));
```#### 切换镜头
```java
mCameraView.switchCamera();
```#### 拍照
```java
mCameraView.takePicture(new FilteredBitmapCallback() {
@Override
public void onData(Bitmap bitmap) {
...
}
});
```#### 录制视频
```java
private boolean isRecording = false; // 录制状态
...
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isRecording = !isRecording;
mCameraView.changeRecordingState(isRecording);
}
});
```#### 设置视频保存路径及拍摄完成的回调
```java
mCameraView.setOuputMP4File(mFile);
mCameraView.setrecordFinishedListnener(new FileCallback() {
@Override
public void onData(File file) {//update the gallery
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(file)));}
});
```## 参考
#### google/grafika
https://github.com/google/grafika
#### android gpuimage
https://github.com/cats-oss/android-gpuimage
#### magic camera
https://github.com/wuhaoyu1990/MagicCamera