1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-01-23 11:14:48 +02:00
imgproxy/docs/getting_the_image_info.md

125 lines
3.4 KiB
Markdown
Raw Normal View History

2022-06-29 20:03:19 +06:00
# Getting the image info![pro](/assets/pro.svg)
2020-03-30 15:45:02 +06:00
imgproxy can fetch and return a source image info without downloading the whole image.
2020-03-30 15:45:02 +06:00
## URL format
To get the image info, use the following URL format:
```
/info/%signature/plain/%source_url
/info/%signature/%encoded_source_url
```
### Signature
A signature protects your URL from being modified by an attacker. It is highly recommended to sign imgproxy URLs in a production environment.
2020-03-30 15:45:02 +06:00
Once you set up your [URL signature](configuration.md#url-signature), check out the [Signing the URL](signing_the_url.md) guide to learn about how to sign your URLs. Otherwise, since the signature is required, feel free to use any string here.
2020-03-30 15:45:02 +06:00
### Source URL
#### Plain
The source URL can be provided as is, prepended by `/plain/` part:
```
/plain/http://example.com/images/curiosity.jpg
```
**📝Note:** If the source URL contains a query string or `@`, you'll need to escape it.
2020-03-30 15:45:02 +06:00
#### Base64 encoded
The source URL can be encoded with URL-safe Base64. The encoded URL can be split with `/` as desired:
2020-03-30 15:45:02 +06:00
```
/aHR0cDovL2V4YW1w/bGUuY29tL2ltYWdl/cy9jdXJpb3NpdHku/anBn
```
#### Encrypted with AES-CBC
The source URL can be encrypted with the AES-CBC algorithm, prepended by the `/enc/` segment. The encrypted URL can be split with `/` as desired:
```
/enc/jwV3wUD9r4VBIzgv/ang3Hbh0vPpcm5cc/VO5rHxzonpvZjppG/2VhDnX2aariBYegH/jlhw_-dqjXDMm4af/ZDU6y5sBog
```
2020-03-30 15:45:02 +06:00
## Response format
imgproxy responses with a JSON body and returns the following info:
2020-03-30 15:45:02 +06:00
* `format`: source image/video format. In case of video - list of predicted formats divided by comma
* `width`: image/video width
* `height`: image/video height
* `size`: file size. Can be zero if the image source doesn't set `Content-Length` header properly
* `exif`: Exif data
* `iptc`: IPTC data
2022-11-16 21:02:28 +06:00
* `xmp`: XMP data
* `video_meta`: metadata from the video
2021-09-28 22:57:46 +06:00
**📝Note:** There are lots of IPTC tags in the spec, but imgproxy supports only a few of them. If you need some tags to be supported, just contact us.
2020-03-30 15:45:02 +06:00
#### Example (JPEG)
```json
{
"format": "jpeg",
"width": 7360,
"height": 4912,
"size": 28993664,
"exif": {
"Aperture": "8.00 EV (f/16.0)",
"Contrast": "Normal",
"Date and Time": "2016:09:11 22:15:03",
"Model": "NIKON D810",
"Software": "Adobe Photoshop Lightroom 6.1 (Windows)"
2021-09-28 22:57:46 +06:00
},
"iptc": {
"Name": "Spider-Man",
"Caption": "Spider-Man swings on the web",
"Copyright Notice": "Daily Bugle",
"Keywords": ["spider-man", "menance", "offender"]
2022-11-08 20:29:38 +06:00
},
"xmp": {
"aux": {
"ApproximateFocusDistance": "4294967295/1",
"ImageNumber": "16604",
"Lens": "16.0-35.0 mm f/4.0",
"LensID": "163",
"LensInfo": "160/10 350/10 40/10 40/10",
"SerialNumber": "12345678"
},
"dc": {
"creator": ["Peter B. Parker"],
"publisher": ["Daily Bugle"],
"subject": ["spider-man", "menance", "offender"],
"format": "image/jpeg"
},
"photoshop": {
"DateCreated": "2016-09-11T18:44:50.003"
}
2020-03-30 15:45:02 +06:00
}
}
```
2021-03-19 12:23:48 +00:00
#### Example (mp4)
2020-03-30 15:45:02 +06:00
```json
{
"format": "mov,mp4,m4a,3gp,3g2,mj2",
"width": 1178,
"height": 730,
"size": 984963,
2022-01-18 16:16:24 +06:00
"exif": {},
"video_meta": {
"com.android.version": "9",
"compatible_brands": "isommp42",
"creation_time": "2022-01-12T15:04:10.000000Z",
"location": "+46.4845+030.6848/",
"location-eng": "+46.4845+030.6848/",
"major_brand": "mp42",
"minor_version": "0"
}
2020-03-30 15:45:02 +06:00
}
```