i.vas3k.ru -- небольший скрипт на Python для загрузки изображений на сервер, созданный специально для твиттер-клиента tweetbot (но вроде как некоторые другие тоже умеют custom image uploading service). Использует Flask для http, PIL для работы с изображениями, PostgreSQL для хранения метаданных и nginx X-Accel-Redirect для генерации превью по любому заданном URL'у. Чисто из спортивного интереса располагается в одном файле (app.py). Ну почти.
Вы можете развернуть этот скрипт у себя на сервере и пользоваться так же как и я. У меня он развернут на поддомене i.vas3k.ru, откуда и получил такое название. Широко используется в моем блоге vas3k.ru для вывода отмасштабированных под размер блока изображений. Для загрузки фото через tweetbot в моем случае нужно указать URL: http://i.vas3k.ru/upload/, файл с именем "image" передается в POST, а так же заголовки для Twitter oAuth Echo. После загрузки возвращается { "url": "http://i.vas3k.ru/32p.jpg" }
Так же есть возможность загружать файлы через простой веб-интерфейс, который доступен при заходе в корень.
Иногда эта фигня кажется слишком простой и банальной, и меня порывает всё "правильно" переписать. Но она отлично работает, делает свое дело и за годы ни разу не сбоила. Значит не надо лезть со своим идеализмом и овердизайном сюда!
- http://i.vas3k.ru/32p.jpg — «каноническая» ссылка на файл. Чтобы не жрать трафик twitter-клиентов, является уменьшеной до 1200px по длинной стороне копией файла;
- http://i.vas3k.ru/full/32p.jpg — возвращает оригинал загруженной фотографии;
- http://i.vas3k.ru/500/32p.jpg — изменение размера до 500px по длинной стороне. Min = 50, max = 2000;
- http://i.vas3k.ru/width/500/32p.jpg — изменение размера до 500px по ширине. Этот и следующий URL сделаны для удобства встраивания на сайты, например, в таймлайны;
- http://i.vas3k.ru/square/500/32p.jpg — кроп до квадрата в центре изображение со стороной равной короткой стороне изображения. После кропа квадрат ресайзится до 500px.