Хранение и извлечение изображений из базы данных с использованием Python - PullRequest
2 голосов
/ 19 марта 2010

Я хочу сохранить изображения, связанные с профилем каждого человека, в БД и получить их когда запрошено, сохраните его как файл .jpg и покажите его пользователям.

Как я могу отобразить данные изображения, хранящиеся в БД, как изображение и сохранить их локально ??

Ответы [ 3 ]

7 голосов
/ 19 марта 2010

Этот вопрос StackOverflow - хороший вопрос, с которого стоит начать, выясняя, хранить ли изображения в БД или в файловой системе.

Хранение изображений в БД - да или нет?*

Я также написал о проблемах в моем блоге

http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/12/03/images-in-databases-part-i-what-to-store.aspx

http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/12/04/images-in-databases-part-ii-web-images-are-random-access.aspx

http://www.atalasoft.com/cs/blogs/loufranco/archive/2009/04/28/document-storage-database-blobs-or-the-filesystem.aspx

Краткий ответесть: если образы маленькие и их не много - большой двоичный объект в БД, вероятно, подойдет (проще для резервного копирования, контроля доступа, транзакций и т. д.).Но производительность по сравнению с файловой системой плохая - это компромисс.Большинство реальных приложений (и особенно крупных веб-сайтов) используют файловую систему, но в некоторых случаях вполне разумно использовать BLOB-объекты.

BLOB-объект (или файл) просто будет закодированными данными (JPG) - этоточно такой же поток байтов.В веб-приложении вы бы использовали тег img - если вы создаете графический интерфейс рабочего стола, посмотрите, какие компоненты у него есть для отображения изображений.

Если вы используете BLOB-объект и должны отображаться вВ веб-приложении src тега img будет установлен в скрипт / view / etc, который возвращает тип содержимого, установленный для mime-типа изображения (например, image / jpeg) и содержимое большого двоичного объекта.

2 голосов
/ 19 марта 2010

Стандартный подход - конвертировать изображение в JPG только один раз, когда оно загружено. Затем сохраните его как обычный файл в файловой системе. Используйте DB только для хранения относительного пути к сохраненному изображению.

Если вы хотите отрендерить, просто используйте HTML:

<img src="/images/relative/path/to/my/image.jpg" />

и настройте свой веб-сервер (nginx, lighttpd и т. Д.) Для обслуживания каталога, в который вы сохраняете изображения, в виртуальном каталоге /images

1 голос
/ 19 марта 2010

Почему бы вам просто не сохранить изображения в файловой системе, а только сохранить их ссылки в базе данных. Это намного элегантнее и не потребляет нагрузки на вашу базу данных.

Кроме того, вам не нужно использовать какие-либо двоичные функции для чтения их из БД, что экономит память и время загрузки.

Есть ли какая-то конкретная причина, по которой вы хотите сохранить ее в БД?

Приветствия

...