diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 00a0bfd..8638708 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,7 +23,7 @@ jobs: nix_path: nixpkgs=channel:nixos-unstable - name: Build - run: nix develop -c trunk build + run: nix develop -c trunk build --release - name: Deploy uses: peaceiris/actions-gh-pages@v3 diff --git a/Cargo.toml b/Cargo.toml index 4cd8b88..630ceec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] base64 = "0.21.4" gloo = "0.10" -img-parts= "0.3.0" +img-parts = "0.3.0" js-sys = "0.3" kamadak-exif = "0.5.5" thiserror = "1.0" diff --git a/README.md b/README.md index d4f16f5..589ac4a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,119 @@ # exify +Simple web application to remove [EXIF](https://en.wikipedia.org/wiki/Exif) (Exchangeable Image File Format) data from images. -## EXIF notes +
-ExifTool by Phil Harvey -> Tags https://exiftool.org/TagNames/EXIF.html -Exiv2 -> Standard Exif Tags https://exiv2.org/tags.html + +All processing is done in the browser. No server. No data is sent anywhere. It still works offline. + + +## Usage + +Open https://sectore.github.io/exify/ in your browser. + +## Development + +### Prerequisites + +#### Nix (recommended) + +Install [Nix](https://zero-to-flakes.com/install) + +#### Other + +Install [Rust](https://www.rust-lang.org/tools/install) and [Trunk](https://trunkrs.dev/) + + +### Build from source + +`cd` into the project directory and run: + +### Nix + +```bash +nix develop +trunk build --release +``` + +### Or others + +```bash +trunk build --release +``` + + +### Developing locally + +`cd` into the project directory and run: + +### Nix + +```bash +nix develop +trunk serve +``` + +### Or others + +```bash +trunk serve +``` + +Open browser at http://127.0.0.1:8080/exify + +## FAQ + +### What does `exify` mean? + +The name `exify` is derived from EXIF, the file format used to store metadata in images. + +### Do I need an Internet connection? + +No. The application works offline. + +### What happens to my original images? + +Original images will be unchanged. All changes will be saved as a new image prefixed with `exify_`. + +### How does exify work? + +Technically the application is built with [Yew](https://yew.rs/) / ([Rust](https://www.rust-lang.org/)) and compiled to [WebAssembly](https://webassembly.org/). It uses [kamadak-exif](https://crates.io/crates/kamadak-exif) and [img-parts](https://crates.io/crates/img-parts) crates to parse and remove EXIF data from images. + +All code runs in the browser. No server is needed. + +### What browsers are supported? + +All modern browsers. + +### What image formats are supported? + +`jpg`, `png` and `webp` formats are supported. + +### What metadata is removed? + +All EXIF data recognized by the application will be removed. + +### Is this application free? + +Yes. The source code is available on GitHub under the MIT license. + +### How can I contribute? + +You can contribute by reporting bugs, suggesting features or by submitting pull requests. + + +## License + +[MIT Lizenz](./LICENSE) diff --git a/src/components/add.rs b/src/components/add.rs index 1f96fbf..aa1cd4d 100644 --- a/src/components/add.rs +++ b/src/components/add.rs @@ -177,7 +177,7 @@ pub fn Add() -> Html { >{"Drop image here"} {if let Some(Err(FileError::DragDropFailed(e))) = ctx.file.clone() { html!{- {format!("Error: {:?}", e)}
} + {format!("ERROR {:?}", e)}} } else { html!{} } diff --git a/src/components/details.rs b/src/components/details.rs index 8a8844e..1901f02 100644 --- a/src/components/details.rs +++ b/src/components/details.rs @@ -101,13 +101,23 @@ pub fn Details() -> Html { { if let Some(fd) = &*file_details { html!{ ++ { if *is_exified { + exified_file_name(&fd) + } else { + fd.name.clone() + } + } +
+{err.to_string()}
+{err.to_string()}
+