Coder Social home page Coder Social logo

iakmds / librecamera Goto Github PK

View Code? Open in Web Editor NEW
265.0 7.0 26.0 10.5 MB

A free and open source camera app for Android written in Flutter and Dart

Home Page: https://f-droid.org/packages/com.iakmds.librecamera/

License: GNU General Public License v3.0

Kotlin 4.13% Dart 95.87%
android camera f-droid

librecamera's Introduction

🌟 New release: v1.9.1 🌟

Take a look at what has changed here!



Translation status

Libre Camera app icon

Libre Camera

A free and open source camera app for Android written in Flutter and Dart licensed under the GPLv3

Get it on F-Droid

Table of Contents

  1. About Libre Camera
  2. Roadmap
  3. Contributing
  4. Packages used
  5. License

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

Download

You can download Libre Camera on F-Droid by tapping on the badge below. Alternatively, download and install the apk directly from the GitHub releases page. Downloading directly from the GitHub releases page will likely download a more recent version (if a new version was published recently) – notice though that the F-Droid and the GitHub versions aren't compatible with one another. You will need to reinstall the app; make sure you remember your settings.

Get it on F-Droid Get it on GitHub

Features

  • Take pictures and record videos with your rear and front camera
  • Privacy: No EXIF metadata saved by default when taking pictures (enable optionally in settings) – without ads, tracking, or unnecessary permissions
  • Themes: Material Design with a Dark, Light or system theme
  • Multiple languages supported – Contribute translating your language!
  • Zoom: Zoom with 2 fingers or with an optional slider
  • Timer/Delay: Select a photo capture timer to get ready for your photo
  • Flashlight modes: On at capture, Off, Auto, Always on
  • Focus: Auto focus, locked focus and manual focus by touching the screen
  • Exposure: Auto exposure, locked exposure and manual exposure with an optional slider
  • Image compression: Set the compression amount in the settings
  • Formats: Switch between 3 camera formats (JPEG, PNG, WebP)
  • Resolutions: Switch between different camera resolutions
  • Save location: Choose your preferred save location
  • Small size (<20 MB)
  • Customizable: Open the settings to customize the app to your liking!

Roadmap

Contributing

These are the ways you can contribute to Libre Camera:

Translation status

Translate

Translation status

Translating guide: Translations are now handled using Weblate! To use Weblate, log into your Weblate account and choose one of the 2 components you want to translate: Either the app itself or the F-Droid metadata. Now, select the language you want to translate or add a new language. You will see a list of different strings to choose from; untranslated and unfinished strings will probably be of most interest to you. And finally: Have fun translating!

Before using Weblate you had to translate Libre Camera manually via pull requests. Thank you @Loughty, @zehrique, @vladkorotnev, @metezd, @ZiTAL and @melentan!

Bug Reporting or Feature Requests

Open an issue on GitHub: Open issue

Remember to check for duplicates and try to give important information such as the app version, Android version, etc.

Code

Feel free to send in a pull request! To get started with Flutter, follow this link: https://docs.flutter.dev/get-started/install

  1. Clone this repository
  2. Switch to the project's directory and run flutter pub get to get all necessary packages. To test the app, run the project in debug mode by selecting an Android device or emulator in your preferred Flutter IDE and running the app in debug mode
  3. To build the final app, run the following command in your terminal: flutter build apk – the output apk will be generated at librecamera/build/app/outputs/apk/release/. To receive all localized strings, run flutter gen-l10n. If you'd like to get multiple apks by splitting them into different platforms (results in smaller sizes), use flutter build apk --split-per-abi.

Packages used

The packages used for this app, also listed in the pubspec.yaml file. See their respective licenses.

Package Use case
camera Camera functionality
device_info_plus Getting the Android version to adapt saving behaviour
dynamic_color Getting the Android Material 3 dynamic color
file_picker Picking the save path
flutter Flutter SDK
flutter_android_volume_keydown Capture photo/video on volume button press
flutter_image_compress Image compression and EXIF metadata removal
flutter_localizations Localization
image Ability to flip captured photos horizontally
intl Localization
native_device_orientation Automatic orientation based on the phones sensor
package_info_plus Display the programs version number
permission_handler Handling permissions
provider State management (localization and themes)
screen_brightness Maximum screen brightness option
shared_preferences Saving app data like settings
smooth_page_indicator Page indicator in the onboarding screen
url_launcher Open the GitHub repository link inside the about menu
video_thumbnail Displaying a captured video inside the thumbnail
wakelock Keeping the display always on

License

This project is licensed under the GNU General Public License Version 3. For details, see LICENSE

librecamera's People

Contributors

albaroty avatar alexrintt avatar azibazrie07 avatar bardock88 avatar comradekingu avatar darthmassari avatar fjuro avatar glemco avatar iakmds avatar kefir2105 avatar kingproone avatar loughty avatar melentan avatar metezd avatar nickgr7 avatar oersen avatar pandermusubi avatar poipoipoipoipoipoipoipoipoi avatar prasanta-hembram avatar provokateurin avatar rezaalmanda avatar rix-x avatar santossi avatar softinterlingua avatar sveinki avatar sziatomi avatar twinflac avatar vladkorotnev avatar weblate avatar zehrique avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

librecamera's Issues

Doesn't add photos to mediastore

When a new photo is taken, it should be added to android's mediastore so that it shows up in the gallery app.

It doesn't currently. I have to restart my phone to see the new photos in the gallery

Feature request: Panorama

It would be really nice for the app to implement a panorama mode and it would also set it apart from other projects.
Keep up the good work :)

Wrong resolution of the picture

No matter whether I set MAX or 4k, it uses wrong resolution in landscape (screenshots). I have two back cameras, so I suggest you should check which one snaps the picture.
Screenshot_20221129-170403_Libre_Camera
Screenshot_20221129-170426_Gallery

An resulation option for video and photos independently

Hello,
Idk if any requested something like this befoe me.

It woud be awsome if the user would be able to choise the resulation of thier photos and videos independently.
I personly want to have the max resulation what my phone can capture for my photos and for videos only full hd cause 4k is extremly memory expensive
I hope you can understand what i mean by that

Can't open picture via little capture preview/thumbnail

Okay 1.1.0 fixed my previous issue of not being able to open the file/s, thank you for that. But now I can't open the picture via the little capture preview. I have to leave the app and go to my gallery app manually. Love the feel of this app btw, feels so smooth and the flow of it is amazing.

Feature Request: Filters & Video Effects

Hello there,

Thank you for making this privacy camera app. It would be a standard like others if it had filters & effects. The only thing that keeps me from using this fully is the lack of that. I make a lot of action videos & heavily use samsungs slo-mo, super slo-mo, & hyperlapse effects built into the default camera app a lot. If this app had those features at least I would fully switch over.

None the less a camera app should have these features as today people are doing things on the fly & with these features to help with productivity for streamers, cc, & more.
Screenshot_20221102-204425_Camera
Screenshot_20221102-211429_Camera
Screenshot_20221102-211708_Camera

The "camera from locked screen" funtion is broken only when I have installed the app

Here an example:
broken.webm
And this is the expected behavior:
normal.webm

I am not a developer, so I don't know really what is the cause, but I think have something to do with this:
#1
Because when I use the F-Droid version (which still at 1.0) this problem does't happen. If that the case, maybe a swith to deactivate the funtion of being "reconice has a camera" could work for now.

My phone uses Android 12 Go, if that helps 😄

Fixed Focus doesn't work when recording a video

The camera keeps trying to focus automatically in Video mode, even when Fixed Focus is selected.
I'll try other apps to see if this is a problem with my phone or with this app.

I'm using a Nokia TA-1157 with Android 11.

Link to GitHub & Camera device buttons launch

Looks really good! Thanks very much for this project, have been looking for a good open source camera application for a while and this looks really useful.

I'm not sure what the API is to set the app as a camera category, but it would be great to be able to set LibreCamera as the app to launch with the Android camera gesture.
Screenshot_20221003-035916.png

Could there be a link to the GitHub repo inside the app? Perhaps in the about menu?

I'm more used to DotNet Maui for cross platform app development but I've done a small amount of flutter before.

Thanks again,
P

Some problems happen at the same time

I had some problem in one app at the same time.

  1. After taking a picture, the white circled around the screen.
  2. You couldn't view recent picture you'd taken.
  3. No photos will go to the chosen path. I checked it. No one. Even internal or external storage.

All permisions had been granted.

Android 10
Samsung J6 (2018)

Feature Request : Launch Selfie Camera By Default

Hello,
Can you add an option in settings called
Launch Selfie Camera at start/Default Camera Mode - Selfie ?

It will be great help for some people who don't want to use / can't use Rear Camera.

Thanks in advance.

camera video mode bit rate and resolution

Currently seems to only have resolution and jpeg encoding compression settings.

Phone camera apps usually allow you to select which resolution, the resolution is hardware encoded by the camera module so only a few specific resolutions are usually supported.. but please list them and allow to select.
Generally you'll have a few options like 1:1 and "full video" which does some weird size.. but majority of the settings will be 16:9 which are hardware supported and things like:

  • 1280x720
  • 1920x1080
  • 1920x1080 60fps
  • 2560x1440 (rarer than the others)
  • 3840x2160

Older samsung phone camera apps allowed selecting the bit rate as well, which is very handy. Certain apps have file size limits so setting your phone to do 500kbps massively decreases the video size... generally the bitrate in phones is far overkill since their lenses are literal trash, so you end up with massive file sizes. But I'd like several minute videos being kept only several megabytes to make it easier to share.
Newer phone camera apps seem to have thrown this idea out completely, even though services online still have the same size limits. There are probably some other apps on the store that have these settings, but none on f-droid do and virtually no "default cameras" do anymore.

Thanks!

Weird resolution on ASUS Zenfone 8

Dear developers,

on my ASUS Zenfone 8 (latest LineageOS installed), when taking a picture, the resolution of my main camera is reduced to 3413 x 1920 px (6.6 MP, aspect ratio 16:9).

The sensor on my phone (Sony IMX686) is definitely 64 MP 4:3 or 16 MP 4:3 with quad bayering, so we're not using the full potential of the sensor.

The Android open source stock camera app takes pictures in 16 MP 4:3, which look really good thanks to the quad bayering. Resolution there is 4576 x 3432 px.

The front camera is a Sony IMX363 12 MP sensor. Resolution is again reduced to 3413 x 1920 px (6.6 MP, 16:9). With stock, it's 4032 x 3024 px (12 MP, 4:3).

A bugfix would be greatly appreciated! Thanks!

Distortion with devices with cutout

Screenshot_20221120-112251_Libre_Camera

My phone is Xiaomi with display cutout and I have switched navigation bar to always present. The bottom portion is great, but the cutout is causing a problem (screenshot).
I would like to suggest limiting the app to the area under the cutout, so that both can coexist, or hiding the upper portion of the navigation bar alltogether.
Great app anyway, I have switched to it from OpenCamera.

Unable to install latest version (1.3.0)

I wanted to update from F-Droid, but it didn't work, so I tried the one from the Github release and that didn't install either. Then I tried using adb install and got:

adb: failed to install com.iakmds.librecamera_4.apk: Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/vmdl1961695026.tmp/base.apk (at Binary XML file line #57): com.iakmds.librecamera.AliasMainActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present]

Can't choose storage path

My phone doesn't let me choose a storage path at the start of the app. When pressing the choose path button there's just a page with no directory on it:

choose-path
no-items

my android's version: 5.1
app's version: 1.1.0, also existed on earlier version 1.0.0
downloaded from f-droid

Support encoding natively to JPEG XL format

Why: JPEG XL is the future of all image formats. It is a new royalty-free image codec targeting the image quality as found on the web, providing about 60% size savings when compared to original JPEG at the same perceptual quality (in my experience, it's been more like 80%), while supporting modern features like HDR, animation, alpha channel, lossless and backwards-compatible JPEG recompression (in my experience, you can save an average of roughly 20% in filesizes just by doing that), lossless and progressive modes. It is based on Google's PIK and Cloudinary's FUIF, and is an ISO standard.

It can even losslessly recompress existing JPEG images.

Explanation here:

Reference implementation here: https://github.com/libjxl/libjxl/

Software implementations, and industry adoption:

The easiest way to implement this would be to integrate libjxl, which is already well-optimized for ARM.

Feature Request: Slow motion

In order to utilize the slow motion capabilities of my Pixel phone's camera I have to use the Google camera app. It would be amazing if I didn't have to leave the libre camera app. Is it possible to add this feature?

Add HDR mode

Great app. Needs a few more nips and tucks... 😜
Please try to add HDR mode for the camera.
Thank you very much!

leave bottom back / menu buttons up or have an option for it

The bottom of some android phones have software (on screen) back / menu / home buttons or whatever they are. This app overrides those and you can't get out without pulling up the menu and sometimes it won't pull up.
I have this in my main android settings to "always show" but it doesn't on libre camera. Please at least have an option to always show in your settings if not hard coded

Thanks!

Gallery Issue

Hey there, I cannot see any clicked photos in my gallery or in any instant app. I have to upload this pics as files to send someone. Hope you will fix it.

Flash in Video mode

First of all, thanks for this new app, I really like the default interface, it shows only the icons I need.

Currently, the Video mode has a Flash icon that behaves the same as for the Camera mode:

  1. No flash
  2. Forced flash
  3. Automatic flash
  4. Light
    It makes sense for the Camera mode, but for the Video mode only the 1 (no flash) and 4 (light) are useful.
    I suggest to remove the 2 and 3 (forced flash and automatic flash) for Video mode.

[Feature request] Visual indicator

I'd like to see some kind of visual indicator (symbol or text, or a short flash like opencamera does) when taking a picture and the shutter sound has been disabled in settings.

Thanks for your work!

Screen doesn't stay on

Hello,
I'm having trouble using LibreCamera, often times the screen fades to black because i don't interact with the screen often enough.
Is it a default behavior or is it something vrong with my phone that i could fix ?

If it's a default behavior, i'd like to suggest an option to keep the screen on when using the app, or double its lenght or something for this app only.

Timelapse

Timelapse function would be appreciated ?

regards John Perreur-Lloyd

Feature: Change Resolution on Camera Display

This app would be perfect if you could change the resolution on the fly from the camera screen. Opencamera also has an option to choose between x264 and x265 when taking video, which is nice.

Not working?

For some reason after taking the picture or video, I select it in the tiny window but it shows up as a non existing picture. I go into my built in gallery and it doesn't even show that it even exists. I have had it set to go to my DMCI folder on my internal storage and my SD card with the same issue. Even tried it outside of the DMCI folder for both storages. I've also tried giving it a personal storage with the same issue. Any reason why it would be doing this?

Questions

I've been using OpenCamera until a few days ago and i would like to understand some differences.

  1. In opencamera it's mentioned that the png format is not a "real" lossless png. Instead the app saves the photo in jpg and then coverts it to png. Is this also the case in LibreCamera?

  2. One of the features mentioned in LibreCamera is a small size. Yet it takes ~20MB as opposed to just 4MB in opencamera. Why this difference?

Thank you

Bug: stock camera takes much higher resolution photos

On my poco f3 the default camera app takes 3000x4000 resolution images but this app is taking 1920x3413 resolution images thaf slso happen to be a bit blurry. I cant figure out if the bug is choosing a weird resolution for the max resolution option or this app choosing the wrong camera (there are two on the back) to take photos with. I dont sre a way to manually choose the right camera on the back in the app.

Privacy by default: make microphone permission optional

This is a wonderful app and I would like to make it a bit better. If we follow the principle of least privilege, users that only take photos with camera app should not be mandated to allow microphone permissions to take their first photo. I would like it to be optional following the standard of other camera apps and requiring the permission only when the user asks for video.

App requires network permission?

Fdroid detects this app requiring network -permission. Why is that?

If not needed, it would be great if unnecessary permissions could be removed.

Screenshot_20221005-073734_F-Droid.jpg

RAW, lossless, lossy and lossily optimised modes supporting multiple image, video and audio codecs

It would be great if LibreCamera could have RAW, lossless and lossy modes with multiple formats to choose from.

Some useful additional image formats could be:

  • RAW (RAW data as it comes)
  • DNG (RAW data in a standardised format)
  • QOI (lossless)
  • PNG (lossless or lossily optimised)
  • WebP (lossy, lossless or lossily optimised)
    based on the free video codec VP8
  • AVIF (lossy, lossless or lossily optimised)
    based on the free video codec AV1
  • JXL (lossy, lossless or lossily optimised)
    JPEG XL - successor of JPEG
  • (FLIF)
  • (FUIF)
  • (Pik)

Proprietary: HEIC

As for free video codecs:

  • VP8 (lossy, lossless or lossily optimised)
  • VP9 (lossy, lossless or lossily optimised)
  • AV1 (lossy, lossless or lossily optimised)
  • HuffYUV (lossless or lossily optimised; simple, fast to encode but but takes up much space)
  • FFV1 (lossless or lossily optimised; probably too slow for real time encoding, efficient)
  • (Daala)
  • (Thor)

Proprietary: h264 (currently used), h265

And free audio codecs:

  • Opus
  • Vorbis
  • FLAC (lossless or lossily optimised)
    Free Lossless Audio Codec
  • MP3 (patents expired in 2017)

Proprietary: AAC (currently used)

Containers:

  • MP4
  • MKV
  • WebM

Instead of a "this or that" choice, it might also useful to have the possibility to encode in multiple codecs of the user's choice like RAW+PNG, JPEG+JXL as well as for videos MKV{AV1+MJPEG+Opus+MP3}. Ideally the user could add self-defined combinations of codecs with per codec settings like compression levels etc.

Some of these formats are useful for later editing, some offer smaller file size at better quality for the web. Many of the listed formats are natively supported by Android, some would need to be converted by the app from lossless ones.

In order for the app to remain small, some formats could be installable as extensions in the form of separate apps.

As the compromise is always between file size, quality and compression time, adding a triangle would suit this notion better than the quality bar. could allow for more choice, it could be some kind of advanced option, maybe in some kind of advanced mode.

Feature request : camera api

Hi,
Could it be possible to add an option to sélect wich caméra API is using ?
Caméra api2 give more possibilities when shooting.
Wide angle is an exemple.

[Feature Request] Default Camera App

I would like to suggest adding the ability to make Libre Camera the default camera app for Android, so that it's possible to access it easily from the lock screen. Thank you in advance

Can't save to SD card

LibreCâmera asks for permission to have access to storage in the wizard and, even granted, if I configure it to save pictures to the SDcard it doesn't!

It takes the picture but the white frame surrounding the image never goes away and the image is never saved.

If it's configured to save on the phone memory it works well!

Please, fix this :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.