Comments (2)
Hi Bernardo,
Do you mind clarifying which of the 12factor principles thumbor fails to achieve? If we are missing something it would be in our interest to improve. Thumbor was designed with utmost extensibility in mind, and as such allows all configuration to be overriden using environment variables and scales up using processes.
I didn't find anything about configuration via environment variables in Thumbor's documentstion. This is one of the core principles of 12factor. Correct please me if I'm wrong.
Thumbor also does not use GraphicsMagick, at least not stock thumbor. Thumbor uses Pillow engine, an engine in Python C. Maybe not as fast as libvips, but that's not an issue since thumbor's extensible nature allows us to try many different engines (also available GraphicsMagick and OpenCV).
As far as I knew at the moment of writing the article, Pillows uses GM under the hood. we'll fix the article if it is not true.
Also, the assertion you make about thumbor's caching engine is just not true. Thumbor does feature an extensible storage of both original and transformed files. This extensibility allows you to use AWS S3, Redis, MongoDB, and a myriad other storage services for your images. That said, thumbor's default storage engine is the filesystem, meaning no additional software is required whatsoever.
We consider all image processing servers for container-based usage, where filesystem cashe is definitely not a good option. But true is true, with filesystem cache of S3 it doesn't need any additional software.
from imgproxy.
The part about environment variables is due to our usage of derpconf. It allows users to override configuration using envs. I'm double checking anyway. Thanks for calling us on that.
I don't think pil depends on graphicsmagick at all. I just ran an ubuntu container (log below), installed python and pillow. No need to install graphicsmagick at all. It would not even make sense to bench pillow against graphicsmagick if that were the case.
On the caching bit. Even with containers, you don't need to use the ephemeral filesystem of the container. You can use any mounted volume (a named volume, a cache of S3 as you said or any other combination). We at globo.com use an NFS mount for our filer system. We don't use AWS, as we have our own data center.
About the performance side, this might interest you: http://python-pillow.org/pillow-perf/
They even compare libvips to pillow-simd. I found it very interesting.
Thank you very much for the quick replies Sergey! Keep up the good work!
$ docker run -it python:2.7 /bin/sh
# pip install pillow
Collecting pillow
Downloading https://files.pythonhosted.org/packages/00/49/a0483e7308b4b04b5a898789911dbb876d9fea54e7df0453915e47744cfd/Pillow-5.1.0-cp27-cp27mu-manylinux1_x86_64.whl (2.0MB)
100% |████████████████████████████████| 2.0MB 13.9MB/s
Installing collected packages: pillow
Successfully installed pillow-5.1.0
# python
Python 2.7.15 (default, May 5 2018, 03:27:20)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from PIL import Image
>>>
#
from imgproxy.
Related Issues (20)
- Asking for Help: Nginx Configuration for Rewrites HOT 2
- Extract 9:16 thumbs from video & using VTT seems to lose the resize HOT 12
- ICO files failing with "Cant load from ICO" error HOT 7
- Base64 encoding of local url doesn't work HOT 1
- Resizing with "fit" mode leads to blurry images in some cases HOT 2
- invalid TIFF format: image dimensions are not specified HOT 6
- Support EPS files HOT 1
- "is not a video" error when trying to source PSD file HOT 2
- How to get width and height of original img?
- Feature request: support using data urls as watermarkurl
- Feature request: Gradient improvements HOT 5
- Text is illegible when a PDF has non-embedded CID TrueType and no character map HOT 4
- Feature Request: Option to limit max dimension of output image HOT 3
- Error: heifsave: image too large HOT 2
- Using imgproxy via Proxy for Amazon S3 HOT 3
- Option to report source image errors HOT 2
- Style transformation for SVG broken since 3.23 HOT 3
- Error: SVG detection does not work when it uses namespaces HOT 2
- Can't download source image: invalid JPEG format: missing SOF marker HOT 2
- ERROR png2vips: unable to read source source HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from imgproxy.