Skip to content

ImagiMingle is a Python project that generates random images using Unsplash's API. It features a user-friendly interface to easily explore and download HD images across various categories like cars and science fiction. Users can also like or dislike images, making it a versatile tool for discovering visually appealing content.

Notifications You must be signed in to change notification settings

Minhal128/ImagiMingle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

ImagiMingle : A Random Image Generator App 🖼️🖨️

I am thrilled to announce the development of my first Python application, ImagiMingle: a sophisticated Random Image Generator App leveraging the Unsplash API. This innovative tool is designed to provide users with a dynamic experience by generating random images in real-time. Users can explore a wide array of images, select their favorites, and engage with them by liking or disliking their choices. The application also offers the functionality to download images in high definition, ensuring that users have access to high-quality visuals. I am eager to see how this tool can be further enhanced and invite contributions to improve its features and functionality.

🔎 Project Preview

Image Description

Disclaimer

This application, ImagiMingle, is a Python-based Random Image Generator that utilizes the Unsplash API to fetch and display images. While the application is designed to provide a user-friendly experience, it is important to note the following:

  • API Usage: This application relies on the Unsplash API, and its functionality is subject to changes in the API's terms of service and rate limits. Ensure you have a valid API key and adhere to Unsplash’s usage guidelines.
  • Error Handling: Although error handling is included, issues such as network errors, API rate limits, or unexpected data formats may affect functionality. Users are encouraged to report any issues encountered.
  • Data Privacy: The application does not collect personal data. However, be cautious when downloading and storing images to ensure compliance with copyright laws and Unsplash’s licensing terms.
  • Dependencies: The application requires external libraries, including requests, tkinter, PIL, and ttkbootstrap. Ensure these dependencies are installed and updated to their compatible versions.
  • No Warranty: This application is provided "as is" without any warranties or guarantees. The author is not responsible for any damages or issues arising from the use of this application.
  • Please use this software responsibly and in accordance with applicable laws and guidelines.

    .

    🧐 Features

    Our project ImagiMingle offers a range of functionalities designed to enhance the user experience with image generation and management. Key features include:

    • Real-Time Image Generation: Leverages the Unsplash API to fetch and display random images based on user-selected categories in real-time.
    • Dynamic Categories: Users can choose from a diverse set of categories, including Food, Animals, People, Marvel, Art, Technology, Vehicles, Moon, Sky, and more
    • Image Selection: Users can view and select their favorite images from a generated set, with the ability to like or dislike each image.
    • HD Image Download: Provides an option to download high-definition images for offline use or personal collection.
    • Intuitive GUI: Features a user-friendly graphical interface built with Tkinter and ttkbootstrap, including buttons for generating images, liking/disliking, downloading, and exiting the application.
    • Responsive Design: Designed to fit various screen sizes with a layout that adjusts to user interactions, ensuring a seamless experience across different devices.
    • Error Handling and Notifications: Includes robust error handling to manage issues like network errors and API rate limits, with user-friendly notifications to keep users informed.
    • Category-Based Generation: Users can start image generation with a selected category, making it easy to focus on specific types of images.
    • Save Preferences: Allows users to select and save their favorite images, providing a personalized experience and easy access to previously liked images.

    E-LOCKS Features

    🛠 Installation Steps:

    1. Clone the repository

        git clone https://github.com/Minhal128/ImagiMingle.git

    2. Install & Run python Language & its modules

     pip install pillow 
     pip install tkinter
     pip install ttkbootstrap
    
    ```bash
     # Run the executable 
    python3 imagi_mingle.py
    or 
    python imagi_mingle.py
    

    Working

  • Modules Used
    • requests
    • io
    • tkinter
    • Pillow (PIL)
    • ttkbootstrap

  • Unsplash API: Your Gateway to Stunning Random Images
  • Unsplash API
  • -Purpose: Provides access to high-quality, random images based on specific categories. -Endpoint: https://api.unsplash.com/photos/random?query={category}&orientation=landscape&client_id=YOUR_API_KEY
  • Key Features:
  • -Query Parameter: query={category} specifies the image category. -Orientation: landscape specifies the image orientation. -API Key: client_id=YOUR_API_KEY is required for authentication.

  • SimpleEncryption Class
  • A simple encryption class is defined to encrypt and decrypt user data using a XOR-based encryption method.

  • Image Generator Functionality
  • display_image(category): Fetches a random image from Unsplash based on the selected category and updates the GUI with the image.
  • like_image() and unlike_image(): Placeholder functions to like or dislike the current image.
  • download_image(): Saves the current image to a user-specified file path.
  • start_generation(): Triggers the image generation process based on the selected category.
  • GUI Components
  • -Dropdown Menu: Allows users to select an image category. -Generate Button: Fetches and displays a new image based on the selected category. -Like Button: Enables users to like the displayed image. -Unlike Button: Enables users to dislike the displayed image. -Download Button: Allows users to download the current image. -Image Display Label: Shows the fetched image.

  • GUI Layout
  • -Uses tkinter for creating the window and arranging widgets. -Applies styles and themes with ttkbootstrap for a modern look.

    ⚠️Limitations

  • API Rate Limits
  • Error Handling
  • No Authentication for Likes/Dislikes
  • Limited Image Resizing Options:
  • No Advanced Search Options
  • 🔮Future Enhancements

  • User Authentication and Profile Management
  • Customizable Image Resizing
  • Advanced Search and Filtering
  • Cross-Platform Compatibility
  • ntegration with Other APIs
  • What I learn?

    • Basic GUI Development with Tkinter: How to create a graphical user interface using Tkinter, including setting up the main window, adding buttons, and handling user interactions.
    • Integration with External APIs: How to interact with the Unsplash API to fetch and display images, including constructing API requests, handling JSON responses, and managing API keys.
    • Handling Images with PIL: How to use the Python Imaging Library (PIL) to open, manipulate, and display images in a Tkinter application.
    • Using ttkbootstrap for Styling: How to apply modern styles to Tkinter widgets using ttkbootstrap, including configuring button styles and themes.
    • Managing Application State: How to manage application state and update the UI based on user actions, such as enabling/disabling buttons and displaying images.

    💖Hope you Like our work!

    This project needs a ⭐ from you. Don't forget to leave a star ⭐

    About

    ImagiMingle is a Python project that generates random images using Unsplash's API. It features a user-friendly interface to easily explore and download HD images across various categories like cars and science fiction. Users can also like or dislike images, making it a versatile tool for discovering visually appealing content.

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages