Task Description: Your task is to create a Golang backend service with HTTP routes for image processing. The service should provide the following functionalities:
- Convert image files from PNG to JPEG.
- Resize images according to specified dimensions.
- Compress images to reduce file size while maintaining reasonable quality.
Instructions:
- Create a Golang project with necessary dependencies to implement the image processing functionalities.
- Implement HTTP routes for the three functionalities mentioned above.
- Write test cases to ensure the correctness and robustness of the implemented functionalities.
- Ensure that the code is well-structured, follows best practices, and includes appropriate error handling.
- Use the OpenCV/FFMPEG library for image processing tasks.
- Provide clear documentation and instructions on how to run the service and execute the tests.
Submission Guidelines:
- Please submit your solution by uploading the project to GitHub.
- Send an email to [email protected] and cc to [email protected] with the subject header "Middle Backend Programmer".
- Include a README.md file in your GitHub repository with detailed instructions on how to set up and run the service, execute the tests, and any other relevant information.
Instructions for Submission:
- Create a new GitHub repository for your project.
- Push your Golang project to the repository, ensuring that the structure is well-organized and includes all necessary files.
- Write clear and concise documentation in the README.md file, including:
- Instructions on how to install any dependencies.
- Steps to set up and run the service locally.
- Guidelines for executing unit tests and ensuring test coverage.
- Any additional information required to understand and use your solution effectively.
- Once your project is on GitHub and the README.md file is updated, send an email to [email protected] and cc to [email protected] with the GitHub repository link.
Evaluation Criteria:
- Correctness and completeness of the implemented functionalities.
- Code quality, readability, and adherence to best practices.
- Effectiveness of unit tests and test coverage.
- Compliance with the provided instructions and requirements.
- Overall approach and problem-solving skills demonstrated in the solution.