{"id":22017826,"url":"https://github.com/moo611/opencamera-for-android","last_synced_at":"2025-04-10T00:18:03.377Z","repository":{"id":48152378,"uuid":"241074566","full_name":"moo611/opencamera-for-android","owner":"moo611","description":"android 美颜相机","archived":false,"fork":false,"pushed_at":"2023-05-30T23:55:00.000Z","size":8444,"stargazers_count":210,"open_issues_count":8,"forks_count":60,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-10T00:17:57.765Z","etag":null,"topics":["android","camera","filter","glsurfaceview","grafika","opengl","opengles"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moo611.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-17T10:02:10.000Z","updated_at":"2025-04-06T22:07:17.000Z","dependencies_parsed_at":"2025-01-16T06:20:42.324Z","dependency_job_id":null,"html_url":"https://github.com/moo611/opencamera-for-android","commit_stats":{"total_commits":54,"total_committers":2,"mean_commits":27.0,"dds":"0.14814814814814814","last_synced_commit":"a1aa989e60cccd976b4b055104f881230ca5aac7"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moo611%2Fopencamera-for-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moo611%2Fopencamera-for-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moo611%2Fopencamera-for-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moo611%2Fopencamera-for-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moo611","download_url":"https://codeload.github.com/moo611/opencamera-for-android/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248131318,"owners_count":21052820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","camera","filter","glsurfaceview","grafika","opengl","opengles"],"created_at":"2024-11-30T05:08:19.001Z","updated_at":"2025-04-10T00:18:03.356Z","avatar_url":"https://github.com/moo611.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenCamera\n#### opencamera是一套高性能的相机框架，基于opengles+glsurfaceview,能实现实时滤镜，拍照，录制短视频，美颜磨皮等功能。\n\n## 效果图\n![实时滤镜](https://github.com/moo611/OpenCamera/blob/master/images/tu1.jpg \"实时滤镜\")\n![生成mp4](https://github.com/moo611/OpenCamera/blob/master/images/tu3.gif \"生成mp4\")\n\n## 已实现功能\n1.拍照\u003cbr\u003e\n2.录视频\u003cbr\u003e\n3.美颜，滤镜\u003cbr\u003e\n\n## 开发计划\n1.加入CameraX Api\u003cbr\u003e\n2.将glsurfaceview变成自定义的textureview渲染\u003cbr\u003e\n3.离线渲染\u003cbr\u003e\n4.将opengl java部分的代码变成可移植的c库，便于ios上的移植。\u003cbr\u003e\n\n\n## 集成和使用\n#### 版本号\n[![](https://www.jitpack.io/v/moo611/OpenCamera.svg)](https://www.jitpack.io/#moo611/OpenCamera)\n```gradle\nallprojects {\n    repositories {\n        ...\n        maven { url 'https://www.jitpack.io' }\n    }\n}\ndependencies \n        {\n\t  implementation 'com.github.moo611:OpenCamera:latestversion'\n\t}\n//注意在android代码块里添加java8支持！！\t\t\n \t\n```\n#### 需要添加jdk 1.8支持\n```gradle\ncompileOptions {\n        sourceCompatibility 1.8\n        targetCompatibility 1.8\n    }\n```\n\n#### 注意，由于demo里用的androidX,因此如果您的项目用的是v4或者v7包，会出现manifest不兼容的情况，有三种解决方案\n#### (1)升级您的应用到androidX\n#### (2)直接导入module的方式导入我的library\n#### (3)用1.0.4及以下版本(不建议)\n\n\n#### 添加权限\n```xml\n\u003cuses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" /\u003e\n    \u003cuses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" /\u003e\n    \u003cuses-permission android:name=\"android.permission.CAMERA\"/\u003e\n    \u003cuses-permission android:name=\"android.permission.RECORD_AUDIO\"/\u003e\n```\n#### xml布局文件\n```xml\n \u003ccom.atech.glcamera.views.GLCameraView\n        app:layout_constraintTop_toTopOf=\"parent\"\n        android:id=\"@+id/glcamera\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\" /\u003e\n```\n#### 开启或关闭美颜（默认开启）\n```java\n mCameraView.enableBeauty(true);\n```\n#### 美颜程度（0~1）\n```java\nmCameraView.setBeautyLevel(0.5f);\n```\n#### 添加滤镜\n\n```java\n\nprivate List\u003cFilterFactory.FilterType\u003efilters = new ArrayList\u003c\u003e();\n  ...\n  filters.add(FilterFactory.FilterType.Original);\n  filters.add(FilterFactory.FilterType.Sunrise);\n  filters.add(FilterFactory.FilterType.Sunset);\n  filters.add(FilterFactory.FilterType.BlackWhite);\n  filters.add(FilterFactory.FilterType.WhiteCat);\n  filters.add(FilterFactory.FilterType.BlackCat);\n  filters.add(FilterFactory.FilterType.SkinWhiten);\n\n```\n\n#### 切换滤镜\n```java\n mCameraView.updateFilter(filters.get(pos));\n```\n\n#### 切换镜头\n```java\n mCameraView.switchCamera();\n```\n\n#### 拍照\n\n```java\n mCameraView.takePicture(new FilteredBitmapCallback() {\n            @Override\n            public void onData(Bitmap bitmap) {\n                 ...\n            }\n        });\n```\n\n#### 录制视频\n```java\n private boolean isRecording = false;  // 录制状态\n   ...\n    \n       btn.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n                \n\t\t\n\t\tisRecording = !isRecording;\n       \n                mCameraView.changeRecordingState(isRecording);\n\t\t\n            }\n        });\n\n       \n         \n```\n\n#### 设置视频保存路径及拍摄完成的回调\n```java\n \n        mCameraView.setOuputMP4File(mFile);\n       \n        mCameraView.setrecordFinishedListnener(new FileCallback() {\n            @Override\n            public void onData(File file) {\n\n                //update the gallery\n                sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,\n                        Uri.fromFile(file)));\n\n            }\n        });\n```\n\n## 参考\n#### google/grafika \nhttps://github.com/google/grafika\n#### android gpuimage\nhttps://github.com/cats-oss/android-gpuimage\n#### magic camera\nhttps://github.com/wuhaoyu1990/MagicCamera\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoo611%2Fopencamera-for-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoo611%2Fopencamera-for-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoo611%2Fopencamera-for-android/lists"}