When you upload an image file, the application will process it according to your configuration. It only supports converting some specific images formats to webp files.
- PNG
- JPEG
- GIF
- TIFF
- WebP
- AVIF
-
Download the release file.
-
Extract and move it to a new directory, a bunch of files may be generated here.
-
Write a config file.
-
And start
picture_box -c config.json
-
--config, -c; REQUIRED; A config file, JSON format. -
--bind, -b; Optional; A hostname, it will override the 'bind' field in config file. -
--port, -p; Optional; it will override 'port' config file.
All the following apis are prefixed with /api/pictures.
| URL | Method | Request | Note | Example |
|---|---|---|---|---|
/:partition/upload |
POST | multipart/form-datafile: File, [name: string] [hash: string] |
Upload an image file. | /default/upload |
/:partition/:scheme/:id |
GET | None | Find an image file. | /default/xs/hashcode |
/:partition/:id |
DELETE | None | Delete all images in a scheme. | /default/hashcode |
/:partition/list |
GET | A password header.Password: <password> |
List all images in a partition | /default/list |
/partitions |
GET | A password header.Password: <password> |
List all partitions, it depends on your configuration. | |
/auth |
GET | A password header.Password: <password> |
Verify the password |
The json structure as follows (Template) :
interface Local { // Root directory. dir: string } // A processing scheme. // Each scheme is a image, and it will be converted to a webp. interface Scheme { // width widht: number | undefined, // height height: number | undefined, // Does it need lossy compression, it has a higher priority. // It would override Partition.lossy. lossy: number | undefined, // Quality of webp file. available if lossy is true. It has a higher priority. // It would overrid Partition.lossy. quality: number | undefined, } interface Partition { // Does it need to be compressed enable: boolean, // Does it need lossy compression. It has a lower priority. // It would be overrided by Resolve.lossy. lossy: boolean, // Which picture in a scheme should be the Frontend thumbnail. // It must be one of the value in a Scheme. thumbnail: string, // Optional, // Quality of webp file. available if lossy is true. It has a lower priority. // It would be overrided by Resolve.lossy. quality: number | undefined, // Default: 80.0, range: (0, 100) // You can create many schemes, but more schemes mean more processing time. // Key: scheme name schemes: Record<string, Scheme>, } interface Config { // Bind hostname bind: String | undefined, // Default: localhost // Port port: number | undefined, // Default: 8080 // Where you wanna store. storage: string, // CORS cors: boolean, // local config. local: Local | undefined, // Required when storage is 'local'. // When you uploaded a image, base_url is a prefix of the generated link. base_url: string | undefined, // Default: http://localhost:80080 // You can create many partitions, each partition have it's owne configure. // The key of this record is a name. partitions: Record<string, Partition> }