Открытие, вращение и хранение изображений TIFF в столбце BLOB-объектов базы данных MySQL

0

Моя проблема довольно прямолинейна:

  • Получить изображение из базы данных MySQL (в настоящее время хранящейся в виде двоичных данных в столбце blob)
  • Поверните это изображение на 90 градусов (используя PHP-изображение)
  • Сохраните изображение в базе данных с примененными изменениями вращения.

У меня возникли проблемы с поиском функций, которые позволят мне сохранить изображение в виде потока данных (а не в файловой системе), поскольку этим изображениям не разрешено касаться веб-сервера (следовательно, почему они находятся в db). Любые советы приветствуются.

Спасибо

  • 0
    если вы можете сохранить его в файл tmp для поворота, сохраните его в db, после удаления файла
  • 0
    Поддерживают ли функции изображений PHP GD файлы TIFF?
Теги:
tiff

2 ответа

0
Лучший ответ

Преобразуете ли вы изображение в другой тип перед вращением? Вы сказали, что используете tiffs, GD может читать только заголовки tiff-изображений, вам нужно будет сначала преобразовать их. Вероятно, с ImageMagick

Скорее всего, вы захотите сохранить файлы в каталоге temp:

  • База данных запросов для файла
  • Сохранить в каталог temp (вы можете защитить файлы, установив необходимые разрешения)
  • Повернуть изображение
  • Вставить обратно в базу данных
  • Удалить временный файл
  • 0
    Вздох После того, как я начал больше копать, я понял, что мне нужно использовать imagick. К сожалению, у меня нет доступа к этой библиотеке в моей текущей среде и, скорее всего, я не получу доступ в ближайшее время. Спасибо за вашу помощь, хотя.
0

ВЫБЕРИТЕ данные из вашей БД. Передайте данные в imagecreatefromstring()

Теперь у вас будет ресурс изображения, на который вы можете вызвать imagerotate.

Чтобы сохранить его обратно в БД, вам нужно будет вывести его с помощью imagepng()/imagejpeg() или эквивалентную функцию для используемого вами типа изображения. Эти функции выводятся в браузер или файл, поэтому вы можете использовать буферизацию вывода для захвата строки для сохранения обратно в БД.

ob_start();
imagepng($resource);
$img_data = ob_get_contents();
ob_end_clean();

$img_data теперь можно сохранить в БД.

Это только грубая схема, но я надеюсь, что я объяснил эту идею.

  • 0
    Пожалуйста, не пробовал, но это лучший метод, который я могу придумать, не использующий временный файл. Выходная буферизация может испортить данные изображения, поэтому вам придется проверить их.
  • 0
    Это похоже на здравую идею, но я получаю предупреждение, когда пытаюсь передать данные большого двоичного объекта в imagecreatefromstring: «Данные не в распознанном формате»
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню