1. Summary
We have a website that displays a list of Websties. For each Website we display its title, description, and screenshot.
The purpose of this project is to develop a command-line program that captures a screenshot of any Website and saves it as an image file. The program must run on Linux VPS machines.
2. Overview
2-1. Purpose
One way for generating a screenshot of a Website programmatically on a Linux VPS machine is to use the Firefox application with Xvfb. We have already tried this approach and it works, but the downside is speed—the 2 software (especially Firefox) require a lot of memory, therefore run very slowly on a low-memory VPS machine.
We'd like to solve this problem by creating a program that can take a screenshot of any Website quickly even on a low-end server.
2-2. Overview
Given a URL and a file path, the program needs to take a screenshot of the provided URL and save an image file at the file path. The size of the screenshot has to be 1024 x 1024.
For example, from the command line the program needs to be executed as:
$ program_name “[login to view URL]” “./files/full/[login to view URL]”
The URL and file path may contain URL-encoded characters such as %82%A0.
2-2-1. Programming Language
As long as the program runs on the environment stated in Section 2-3, there is no restriction for which programming language to use.
 
2-2-2. Execution Speed
The program needs to generate a screenshot image file within 10 seconds on a 256MB RAM VPS machine.
When the Website contains a Flash content, however, the execution time may exceed 10 seconds in order to wait for the content to be loaded.
The program should exit as soon as generating the image file successfully.
2-2-3. Image Format
The program needs to save an image file in either PNG or JPEG format.
Only 1 format needs to be supported.
2-2-4. Character Encoding
Requested Websites may contain multi-byte characters such as Japanese.
The program needs to render Websites in any character encoding supported by common Web browsers.
2-2-4. Error Handling
When a screenshot cannot be taken, the program should terminate without generating an image file. The timeout should occur after 60 seconds.
2-2-5. Configuration (optional)
Ideally, the image size described in Section 2-2, the image format in Section 2-2-3, and the timeout setting in Section 2-2-4 need to be configurable. However, this configuration feature is optional.
 
2-3. System Requirement
The program needs to run on the following VPS environment.
RAM: 256MB
OS: CentOS 5.5 (64-bit)
PHP: 5.2.17
Other libraries or yum packages for the program can be installed if necessary.
3. Deliverable and Schedule
The program, source code, and the list of tested URLs should be turned in.
The copyright holder of the program will be 4plus Inc.
Although there is no fixed deadline for this project, please propose the shortest possible delivery period.
4. Budget
Please provide a cost proposal to complete this project.
The proposal should also explain which image format is supported, and what libraries or yum packages are required.
If the optional configuration feature in Section 2-2-5 can be implemented, please provide 2 proposals: one for with the feature, and the other for without the feature. Please also explain how you would implement the feature.
On getting the job, i'll be using the webkit rendering engine directly using cutycapt to generate the image using the command line. The resolution and other details can be specified. 250$ shold suffice for this project, and it will have a configurable option to choose either png or jpg formats. You will only be required to install the Qt packages, and cutycpat using a few command line instructions. Having already worked on shell scripts extensively in college, I think I will be perfect for this job.
sir,i have recently do the same job in a project,thinking about using firefox cost lots of memory and time,we use xvfb+CutyCapt for a page shot,if the CutyCapt reach the timeout but fail to cut the web page,then run the WKHTML2Image command get the image?i can write shell or python
We understand the real architecture of these scenario. We are expert in scripting and data management in every aspect and committed for best service out of the industry.