├── requirements.txt ├── .gitattributes ├── README.md ├── LICENSE └── app.py /requirements.txt: -------------------------------------------------------------------------------- 1 | gradio 2 | pillow 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.7z filter=lfs diff=lfs merge=lfs -text 2 | *.arrow filter=lfs diff=lfs merge=lfs -text 3 | *.bin filter=lfs diff=lfs merge=lfs -text 4 | *.bz2 filter=lfs diff=lfs merge=lfs -text 5 | *.ckpt filter=lfs diff=lfs merge=lfs -text 6 | *.ftz filter=lfs diff=lfs merge=lfs -text 7 | *.gz filter=lfs diff=lfs merge=lfs -text 8 | *.h5 filter=lfs diff=lfs merge=lfs -text 9 | *.joblib filter=lfs diff=lfs merge=lfs -text 10 | *.lfs.* filter=lfs diff=lfs merge=lfs -text 11 | *.mlmodel filter=lfs diff=lfs merge=lfs -text 12 | *.model filter=lfs diff=lfs merge=lfs -text 13 | *.msgpack filter=lfs diff=lfs merge=lfs -text 14 | *.npy filter=lfs diff=lfs merge=lfs -text 15 | *.npz filter=lfs diff=lfs merge=lfs -text 16 | *.onnx filter=lfs diff=lfs merge=lfs -text 17 | *.ot filter=lfs diff=lfs merge=lfs -text 18 | *.parquet filter=lfs diff=lfs merge=lfs -text 19 | *.pb filter=lfs diff=lfs merge=lfs -text 20 | *.pickle filter=lfs diff=lfs merge=lfs -text 21 | *.pkl filter=lfs diff=lfs merge=lfs -text 22 | *.pt filter=lfs diff=lfs merge=lfs -text 23 | *.pth filter=lfs diff=lfs merge=lfs -text 24 | *.rar filter=lfs diff=lfs merge=lfs -text 25 | *.safetensors filter=lfs diff=lfs merge=lfs -text 26 | saved_model/**/* filter=lfs diff=lfs merge=lfs -text 27 | *.tar.* filter=lfs diff=lfs merge=lfs -text 28 | *.tar filter=lfs diff=lfs merge=lfs -text 29 | *.tflite filter=lfs diff=lfs merge=lfs -text 30 | *.tgz filter=lfs diff=lfs merge=lfs -text 31 | *.wasm filter=lfs diff=lfs merge=lfs -text 32 | *.xz filter=lfs diff=lfs merge=lfs -text 33 | *.zip filter=lfs diff=lfs merge=lfs -text 34 | *.zst filter=lfs diff=lfs merge=lfs -text 35 | *tfevents* filter=lfs diff=lfs merge=lfs -text 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Base64 to Image Converter 2 | 3 | This project provides a simple web interface built with Gradio to convert Base64 encoded strings into viewable images. It uses Python with the Pillow library for image processing. 4 | 5 | **GitHub Repository:** [https://github.com/PRITHIVSAKTHIUR/Base64-to-Image-Encode](https://github.com/PRITHIVSAKTHIUR/Base64-to-Image-Encode) 6 | 7 | ## Overview 8 | 9 | The application takes a Base64 string as input (either raw or with a data URI scheme like `data:image/png;base64,...`) and decodes it to display the corresponding image directly in the web interface. 10 | 11 | ## Features 12 | 13 | * **Simple Web UI:** Easy-to-use interface powered by Gradio. 14 | * **Data URI Support:** Automatically removes the `data:image/...;base64,` header if present. 15 | * **Error Handling:** Provides feedback if the Base64 string is invalid or if the data cannot be converted to an image. 16 | * **Image Conversion:** Ensures the final displayed image is in RGB format using Pillow. 17 | * **Example Inputs:** Includes clickable examples directly in the UI for easy testing. 18 | 19 | ## Requirements 20 | 21 | * Python 3.x 22 | * Gradio 23 | * Pillow (PIL fork) 24 | 25 | ## Installation 26 | 27 | 1. **Clone the repository:** 28 | ```bash 29 | git clone [https://github.com/PRITHIVSAKTHIUR/Base64-to-Image-Encode.git](https://github.com/PRITHIVSAKTHIUR/Base64-to-Image-Encode.git) 30 | cd Base64-to-Image-Encode 31 | ``` 32 | 33 | 2. **Install the required libraries:** 34 | ```bash 35 | pip install gradio Pillow 36 | ``` 37 | *(Note: The `base64` and `io` modules are part of the Python standard library and don't require separate installation.)* 38 | 39 | ## Usage 40 | 41 | 1. **Run the Python script:** 42 | *(Assuming you saved the provided code as `app.py` or similar)* 43 | ```bash 44 | python app.py 45 | ``` 46 | 47 | 2. **Access the Interface:** 48 | The script will start a local web server and print a URL (usually `http://127.0.0.1:7860` or similar). Open this URL in your web browser. 49 | 50 | 3. **Convert Base64:** 51 | * Paste your Base64 encoded string into the input text box. 52 | * Alternatively, click one of the provided examples below the input box. 53 | * Click the "Submit" button. 54 | * The decoded image will appear in the output area. If there's an error, an error message will be displayed instead. 55 | 56 | ## Code Structure 57 | 58 | * `base64_to_image(b64_string: str)`: The core function that handles the Base64 decoding and image conversion. It performs error checking for URI format, decoding, and image opening. 59 | * `gr.Interface(...)`: Sets up the Gradio web interface, linking the `base64_to_image` function to the text input and image output components. 60 | 61 | ## Contributing 62 | 63 | Contributions are welcome! If you find any issues or have suggestions for improvements, please feel free to open an issue or submit a pull request. 64 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | import base64 2 | from io import BytesIO 3 | from PIL import Image 4 | import gradio as gr 5 | 6 | def base64_to_image(b64_string: str): 7 | """ 8 | Convert a Base64-encoded string to a PIL image. 9 | 10 | If the string includes a data URI scheme (e.g. "data:image/png;base64,..."), 11 | then the header is removed before decoding. 12 | """ 13 | # Remove data header if it exists 14 | if b64_string.startswith("data:image"): 15 | try: 16 | b64_string = b64_string.split(",")[1] 17 | except IndexError: 18 | return "Error: Incorrect data URI format." 19 | 20 | try: 21 | # Decode the Base64 string to binary data 22 | image_data = base64.b64decode(b64_string) 23 | except Exception as e: 24 | return f"Error decoding Base64: {str(e)}" 25 | 26 | try: 27 | # Open the image from binary data 28 | image = Image.open(BytesIO(image_data)) 29 | # Optionally, convert to RGB if image is in another mode 30 | if image.mode != "RGB": 31 | image = image.convert("RGB") 32 | return image 33 | except Exception as e: 34 | return f"Error converting decoded data to image: {str(e)}" 35 | 36 | # Create the Gradio interface 37 | demo = gr.Interface( 38 | fn=base64_to_image, 39 | inputs=gr.Textbox( 40 | lines=10, 41 | placeholder="Enter your Base64 string here..." 42 | ), 43 | outputs="image", 44 | title="Base64 to Image Converter", 45 | description="Paste a Base64 encoded string (with or without the data URI header) to convert it into an image.", 46 | examples=[ 47 | ["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"], 48 | ["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"], 49 | ] 50 | ) 51 | 52 | if __name__ == "__main__": 53 | demo.launch() 54 | --------------------------------------------------------------------------------