diff --git a/.idea/sonarlint/issuestore/0/1/01befcab7c9a9843529edd8ad2ff49939e670ec0 b/.idea/sonarlint/issuestore/0/1/01befcab7c9a9843529edd8ad2ff49939e670ec0 index 040ef33..7e51285 100644 --- a/.idea/sonarlint/issuestore/0/1/01befcab7c9a9843529edd8ad2ff49939e670ec0 +++ b/.idea/sonarlint/issuestore/0/1/01befcab7c9a9843529edd8ad2ff49939e670ec0 @@ -1,6 +1,6 @@ Œ java:S3252 -"IUse static access with "javax.swing.WindowConstants" for "EXIT_ON_CLOSE".(¢”“8Ā¹ķž2J$93f5f466-90c4-4afc-a6af-37de424f0678 +"IUse static access with "javax.swing.WindowConstants" for "EXIT_ON_CLOSE".(¢”“8Ā¹ķž2J$622bf740-cb16-4bea-84e6-6801359108de … -java:S3252 "=Use static access with "java.awt.Frame" for "MAXIMIZED_BOTH".(Ź¤³ńś’’’’8£öž2J$ea432367-f1c8-4d02-a6de-ee6ed5aa621b \ No newline at end of file +java:S3252 "=Use static access with "java.awt.Frame" for "MAXIMIZED_BOTH".(Ź¤³ńś’’’’8£öž2J$57c09fe9-efc6-46fb-9241-4ed0dfa27049 \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/5/1/5192ee4e237c8878d39e5fec0fe3af1bd9824513 b/.idea/sonarlint/issuestore/5/1/5192ee4e237c8878d39e5fec0fe3af1bd9824513 deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/issuestore/5/8/58cd27fc361bb33602d8900e4b6de7e8d2986c0f b/.idea/sonarlint/issuestore/5/8/58cd27fc361bb33602d8900e4b6de7e8d2986c0f deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/issuestore/8/b/8b75926bbfa3823a8089c3c28a00dcf9b5cdec42 b/.idea/sonarlint/issuestore/8/b/8b75926bbfa3823a8089c3c28a00dcf9b5cdec42 index 1807bd6..a8a23ae 100644 --- a/.idea/sonarlint/issuestore/8/b/8b75926bbfa3823a8089c3c28a00dcf9b5cdec42 +++ b/.idea/sonarlint/issuestore/8/b/8b75926bbfa3823a8089c3c28a00dcf9b5cdec42 @@ -1,35 +1,33 @@ p -java:S1604E"(Make this anonymous inner class a lambda(ö¹Éąų’’’’8Ā²‰Ÿ2J$706ae401-a5f4-4ff9-8389-d6a0c9225211 +java:S1604E"(Make this anonymous inner class a lambda(ö¹Éąų’’’’8Ā²‰Ÿ2J$94ec80f3-14e7-493c-85db-d34cafa280bf k -java:S1604L"(Make this anonymous inner class a lambda(ĻŽø8Ā²‰Ÿ2J$258a5720-86d0-48f3-a4c2-56ec2b99616e +java:S1604L"(Make this anonymous inner class a lambda(ĻŽø8Ā²‰Ÿ2J$5aab5114-e161-4713-a246-35168b44e7c6 k -java:S1604S"(Make this anonymous inner class a lambda(āÆĖ¾8Ć²‰Ÿ2J$da9510d6-56af-4eca-ba33-cab8f31fdbb0 +java:S1604S"(Make this anonymous inner class a lambda(āÆĖ¾8Ć²‰Ÿ2J$34ac3bd2-e910-4ae6-b25a-3c471db15ff7 p -java:S1604Z"(Make this anonymous inner class a lambda(™½ƒõü’’’’8Ć²‰Ÿ2J$6903e25d-80f5-40bc-8709-e71d0d7a84d6 +java:S1604Z"(Make this anonymous inner class a lambda(™½ƒõü’’’’8Ć²‰Ÿ2J$0d827da3-9477-4625-aa60-9da1100f7d8c p -java:S1604a"(Make this anonymous inner class a lambda(ŠØ’•ü’’’’8Ć²‰Ÿ2J$0d408b6a-0394-44eb-9666-e9489e7af87e +java:S1604a"(Make this anonymous inner class a lambda(ŠØ’•ü’’’’8Ć²‰Ÿ2J$a3556366-5329-4231-91e0-d0f293c9c301 Ÿ -java:S1450"\Remove the "filteredImage" field and declare it as a local variable in the relevant methods.(Ęņ’Ź8Ņ²‰Ÿ2J$b62b574e-0193-408b-aa56-a231bb29cc52 +java:S1450"\Remove the "filteredImage" field and declare it as a local variable in the relevant methods.(Ęņ’Ź8Ņ²‰Ÿ2J$462dfcec-1f2e-40d8-a9b4-f833d7642782 Ÿ -java:S1450"\Remove the "originalImage" field and declare it as a local variable in the relevant methods.(¼–Ŗ8Ņ²‰Ÿ2J$0c3c6060-80cc-4422-87d2-ef56442c144c +java:S1450"\Remove the "originalImage" field and declare it as a local variable in the relevant methods.(¼–Ŗ8Ņ²‰Ÿ2J$b254a7eb-4d68-49be-b241-58a1ba59242a r -java:S1948"/Make "originalImage" transient or serializable.(¼–Ŗ8Ņ²‰Ÿ2J$5e58d129-49ff-4843-822b-9f1986d40515 +java:S1948"/Make "originalImage" transient or serializable.(¼–Ŗ8Ņ²‰Ÿ2J$ae1210c7-7594-4aff-b8dc-75d7c70c2a46 r -java:S1948"/Make "filteredImage" transient or serializable.(Ęņ’Ź8Ņ²‰Ÿ2J$df9a8506-be72-4e11-93f3-0ea460969f1b +java:S1948"/Make "filteredImage" transient or serializable.(Ęņ’Ź8Ņ²‰Ÿ2J$62664113-29b7-4204-ad93-d48b09f072e3 k -java:S1948¹"'Make "image" transient or serializable.(žšć’8³¬ąž2J$22f64e8b-18c5-4514-bf85-63ca9a0d6325 +java:S1948¹"'Make "image" transient or serializable.(žšć’8³¬ąž2J$399165e1-40c4-488e-aba8-7d0429585aed ƒ -java:S1161Ś":Add the "@Override" annotation above this method signature(®ī’×ü’’’’8·¬ąž2J$9279033d-7f4c-40ca-8ab7-2c225d6b311e +java:S1161Ś":Add the "@Override" annotation above this method signature(®ī’×ü’’’’8·¬ąž2J$5fbb1c6c-300d-4904-82ea-22ee6c27223b } -java:S1161ą":Add the "@Override" annotation above this method signature(®—ĖF8ø¬ąž2J$613b7967-4d0f-45af-bc3c-f437f396fc18 +java:S1161ą":Add the "@Override" annotation above this method signature(®—ĖF8ø¬ąž2J$dcb510c7-e5b3-45ca-9175-1da21dc6eaee j -java:S1905ć"&Remove this unnecessary cast to "int".(Ģ€¼8¹¬ąž2J$a9bfaa5a-2c9c-46da-bad1-8e0220a989e9 +java:S1905ć"&Remove this unnecessary cast to "int".(Ģ€¼8¹¬ąž2J$4fa2fab3-de98-4817-a0a4-a5b2427c0ec3 e -java:S1110ć"!Remove these useless parentheses.(Ģ€¼8¹¬ąž2J$598de758-2c21-4224-8fe6-0b0f4cb7f8a1 +java:S1110ć"!Remove these useless parentheses.(Ģ€¼8¹¬ąž2J$2eb1d0bc-67db-48c9-ac68-3b69322ecbbe j -java:S1905ä"&Remove this unnecessary cast to "int".(–‡ōÖ8¹¬ąž2J$43ed8376-d067-49ce-b740-037fd176e0b5 +java:S1905ä"&Remove this unnecessary cast to "int".(–‡ōÖ8¹¬ąž2J$c2fd5fb5-8342-44b4-ae96-dabe83aa5216 e -java:S1110ä"!Remove these useless parentheses.(–‡ōÖ8¹¬ąž2J$6439f723-c24e-4ba1-8194-1d97a683ada3 -‡ -java:S1128"DRemove this unused import 'com.google.common.collect.ImmutableList'.(Ć½ø8ˆ³‰Ÿ2J$fb282a0a-04eb-4610-a736-00f57545bb82 \ No newline at end of file +java:S1110ä"!Remove these useless parentheses.(–‡ōÖ8¹¬ąž2J$6e12e352-3e10-4e1d-a46a-d13c3770a287 \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/b/3/b361ab0d9f6bc2c4f37e3501869785249aea8fdd b/.idea/sonarlint/issuestore/b/3/b361ab0d9f6bc2c4f37e3501869785249aea8fdd deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/issuestore/c/1/c1c436f3d2f8cefd60c1af294daa34adecc3b04f b/.idea/sonarlint/issuestore/c/1/c1c436f3d2f8cefd60c1af294daa34adecc3b04f deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb index 1696388..60c24f1 100644 --- a/.idea/sonarlint/issuestore/index.pb +++ b/.idea/sonarlint/issuestore/index.pb @@ -60,12 +60,4 @@ Asrc/main/java/com/rutuj/photofiltersapp/view/PhotoFiltersApp.java,0\1\01befcab ~ Nsrc/main/java/com/rutuj/photofiltersapp/Tester/PhotoConverterManualTester.java,2\e\2e6367463c7ddd6b0c5809d1c6461a37831d0927 7 -gradlew,5\b\5bbfa66edb4db3c7c33c5181f43510990d3307f9 -{ -Ksrc/main/java/com/rutuj/photofiltersapp/view/PhotoFiltersApp_structure.puml,b\3\b361ab0d9f6bc2c4f37e3501869785249aea8fdd -~ -Nsrc/main/java/com/rutuj/photofiltersapp/view/PhotoFiltersApp_0_main_calls.puml,5\1\5192ee4e237c8878d39e5fec0fe3af1bd9824513 -u -Esrc/main/java/com/rutuj/photofiltersapp/view/MainPanel_structure.puml,c\1\c1c436f3d2f8cefd60c1af294daa34adecc3b04f -} -Msrc/main/java/com/rutuj/photofiltersapp/view/MainPanel_0_MainPanel_calls.puml,5\8\58cd27fc361bb33602d8900e4b6de7e8d2986c0f \ No newline at end of file +gradlew,5\b\5bbfa66edb4db3c7c33c5181f43510990d3307f9 \ No newline at end of file diff --git a/.idea/sonarlint/securityhotspotstore/5/1/5192ee4e237c8878d39e5fec0fe3af1bd9824513 b/.idea/sonarlint/securityhotspotstore/5/1/5192ee4e237c8878d39e5fec0fe3af1bd9824513 deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/securityhotspotstore/5/8/58cd27fc361bb33602d8900e4b6de7e8d2986c0f b/.idea/sonarlint/securityhotspotstore/5/8/58cd27fc361bb33602d8900e4b6de7e8d2986c0f deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/securityhotspotstore/b/3/b361ab0d9f6bc2c4f37e3501869785249aea8fdd b/.idea/sonarlint/securityhotspotstore/b/3/b361ab0d9f6bc2c4f37e3501869785249aea8fdd deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/securityhotspotstore/c/1/c1c436f3d2f8cefd60c1af294daa34adecc3b04f b/.idea/sonarlint/securityhotspotstore/c/1/c1c436f3d2f8cefd60c1af294daa34adecc3b04f deleted file mode 100644 index e69de29..0000000 diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb index 1696388..60c24f1 100644 --- a/.idea/sonarlint/securityhotspotstore/index.pb +++ b/.idea/sonarlint/securityhotspotstore/index.pb @@ -60,12 +60,4 @@ Asrc/main/java/com/rutuj/photofiltersapp/view/PhotoFiltersApp.java,0\1\01befcab ~ Nsrc/main/java/com/rutuj/photofiltersapp/Tester/PhotoConverterManualTester.java,2\e\2e6367463c7ddd6b0c5809d1c6461a37831d0927 7 -gradlew,5\b\5bbfa66edb4db3c7c33c5181f43510990d3307f9 -{ -Ksrc/main/java/com/rutuj/photofiltersapp/view/PhotoFiltersApp_structure.puml,b\3\b361ab0d9f6bc2c4f37e3501869785249aea8fdd -~ -Nsrc/main/java/com/rutuj/photofiltersapp/view/PhotoFiltersApp_0_main_calls.puml,5\1\5192ee4e237c8878d39e5fec0fe3af1bd9824513 -u -Esrc/main/java/com/rutuj/photofiltersapp/view/MainPanel_structure.puml,c\1\c1c436f3d2f8cefd60c1af294daa34adecc3b04f -} -Msrc/main/java/com/rutuj/photofiltersapp/view/MainPanel_0_MainPanel_calls.puml,5\8\58cd27fc361bb33602d8900e4b6de7e8d2986c0f \ No newline at end of file +gradlew,5\b\5bbfa66edb4db3c7c33c5181f43510990d3307f9 \ No newline at end of file diff --git a/README.md b/README.md index cf1f3db..976fc27 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,20 @@ # Photo Filters App -This is a Java application that allows users to apply different filters to their photos. The application uses Dagger for dependency injection and Gradle for build automation. +This is a sample Java application that allows users to apply different filters to their photos. +The application allows users to load an image from their local file system, apply filters to the image, and save the filtered image back to their local file system. +Currently, the application supports the following filters: +- Grayscale +- Sepia +- Invert + +![Application Preview](src/main/resources/App_Working_Sample.jpg) + +#### Key Features +- **User-Friendly Interface:** Built with Java Swing for a familiar and intuitive experience. +- **Image Manipulation:** Leverages Java AWT for efficient image processing. +- **Clean Architecture:** Employs the Model-View-Controller (MVC) pattern for well-organized code. +- **Dependency Injection:** Uses Dagger for streamlined dependency management. +- **Build Automation:** Powered by Gradle for easy project setup and management. ## Getting Started @@ -18,31 +32,40 @@ These instructions will get you a copy of the project up and running on your loc git clone https://github.com/RutujChheda/photofiltersapp.git ``` -1. Navigate to the project directory +2. Navigate to the project directory ```bash cd photofiltersapp ``` -2. Build the project +3. Build the project ```bash gradle build ``` -3. Usage +4. Usage ```bash gradle run ``` + ## Architecture Diagrams -### PhotoConverterManualTester Main Calls +### PhotoFiltersApp Structure +![PhotoConverterManualTester Structure](src/main/resources/PhotoConverterManualTester_structure.svg) +[Project Structure](src/main/resources/MainPanel_structure.puml) + +### PhotoFiltersApp Main Calls ![PhotoConverterManualTester Main Calls](src/main/resources/PhotoConverterManualTester_0_main_calls.svg) [Project Calls Sequence](src/main/resources/MainPanel_0_MainPanel_calls.puml) -### PhotoConverterManualTester Structure -![PhotoConverterManualTester Structure](src/main/resources/PhotoConverterManualTester_structure.svg) -[Project Structure](src/main/resources/MainPanel_structure.puml) + ### Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. -Please make sure to update tests as appropriate. +Please make sure to update tests as appropriate. + +### How to Contribute: +1. Fork the repository. +2. Create a new branch for your feature or bug fix. +3. Make your changes and commit them with clear descriptions. +4. Push your changes to your fork. \ No newline at end of file diff --git a/src/main/java/com/rutuj/photofiltersapp/view/MainPanel.java b/src/main/java/com/rutuj/photofiltersapp/view/MainPanel.java index 3a61ac5..b6f1239 100644 --- a/src/main/java/com/rutuj/photofiltersapp/view/MainPanel.java +++ b/src/main/java/com/rutuj/photofiltersapp/view/MainPanel.java @@ -1,6 +1,6 @@ package com.rutuj.photofiltersapp.view; -import com.google.common.collect.ImmutableList; + import com.rutuj.photofiltersapp.activity.ConvertPhotoActivity; import com.rutuj.photofiltersapp.dependency.DaggerServiceComponent; import com.rutuj.photofiltersapp.dependency.ServiceComponent; diff --git a/src/main/resources/App_Working_Sample.jpg b/src/main/resources/App_Working_Sample.jpg new file mode 100644 index 0000000..d051261 Binary files /dev/null and b/src/main/resources/App_Working_Sample.jpg differ diff --git a/src/output/long-term-prices-food_1718479479026_inversion.png b/src/output/long-term-prices-food_1718479479026_inversion.png new file mode 100644 index 0000000..8c9c483 Binary files /dev/null and b/src/output/long-term-prices-food_1718479479026_inversion.png differ