2016-12-14 14 views
1

Допустим, у меня есть RAW-изображение на удаленном сервере, например, это www.mydomain.com/DSC0001.ARW, и я хотел бы только извлечь «небольшое» изображение предварительного просмотра (jpg) из этого необработанного файла, без необходимости загружать весь необработанный файл, возможно ли это как-то?Встроенный jpg из удаленного необработанного файла, только?

+0

Был ли мой ответ или любые другие проблемы, устраняющие вашу проблему? Если да, пожалуйста, подумайте о том, чтобы принять его как ваш ответ - нажав полый зеленый галочку/галочку рядом с подсчетом голосов. Если нет, скажите, пожалуйста, что не сработало, чтобы я или кто-то еще помог вам дальше. Благодарю. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

+0

Извините - не работает в течение нескольких дней. Дайте обновленную версию попробовать как можно скорее, и вернитесь, спасибо! – nickelman

ответ

0

Обновлено Опять

Хорошо, оказывается, что сервер, на котором у вас есть исходные файлы на самом деле не ваш, так что вы не можете извлечь изображение предварительного просмотра на сервере, как я предложил ... однако, вы может загружать только часть изображения 25 МБ, а затем извлекать локально. Итак, здесь я загружаю только первый 1Мб из файла на сервере не владеют на моей локальной машине, а затем извлечь предварительный просмотр локально:

curl -r 0-1000000 http://www.rawsamples.ch/raws/sony/RAW_SONY_ILCA-77M2.ARW > partial.arw 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 976k 100 976k 0  0 984k  0 --:--:-- --:--:-- --:--:-- 983k 

exiftool -b -PreviewImage -W! preview.jpg partial.arw 

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

Обновлено Ответ

на самом деле, это проще в использовании ExifTool извлечь предварительный просмотр на сервере, (будучи просто скрипт на Perl) это намного проще для установки, чем изображениеMagick.

Вот как извлечь Preview из файла Sony ARW в командной строке:

exiftool -b -PreviewImage -W! preview.jpg sample.arw 

Это извлечет Preview из sample.arw в файл под названием preview.jpg.

Таким образом, вы бы поставить PHP скрипт на сервере (называя его preview.php), который выглядит следующим образом:

#!/usr/bin/php -f 
<?php 
$image=$_GET['image']; 
header("Content-type: image/jpeg"); 
exec("exiftool -b -PreviewImage -W! preview.jpg $image"); 
readfile("preview.jpg"); 
?> 

и извлечет Preview от параметра имени image и отправить его обратно к вам, как JPEG.

В зависимости от настроек сервера и имен файлов, вызов будет что-то вроде:

http://yourserver/preview.php?image=sample.arw 

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

Оригинал ответа

Это довольно легко, если вы можете запустить ImageMagick на сервере, вы можете запустить небольшой PHP скрипт, который принимает имя изображения в качестве параметра, извлекает миниатюры и посылает вам JPEG ,

Я предполагаю, что вы имеете в виду изображение с изображением Sony Alpha.

+0

Да, эта часть, которую я знаю. – nickelman

+0

Однако это все равно означает, что мне нужно запросить/загрузить весь необработанный файл с удаленного сервера, прежде чем я смогу извлечь этот jpeg. Я пытаюсь найти способ, когда вам нужно только запросить/загрузить определенную часть из файла, чтобы быстро просмотреть этот предварительный просмотр миниатюр. – nickelman

+0

Нет, JPEG извлекается на сервере с помощью ** ImageMagick **, как я уже сказал и только эскиз отправляется клиенту. Если вы предоставите необработанный образ Sony, я попытаюсь продемонстрировать. –

1

Позвольте мне предисловие к этому: я не специалист по обработке изображений.

Ответ на ваш вопрос

Вы можете показать изображения изменены, но это все равно будет загрузить весь файл. На мой взгляд, это означает, что наилучшим подходом было бы сохранить предварительно обработанный миниатюру этого изображения вместе с необработанным изображением. Если вы используете какое-то соглашение об именах, например DSC0001.ARW.thumbnail.png, их должно быть легко найти.

Возможное альтернативное решение на AWS стек

Возможно только реалистичное решение, если вы готовы принять участие в какой-то код и АМС. Если вы используете AWS S3 для хранения изображений, вы можете отправить событие AWS Lambda для запуска скрипта, который обрабатывает ваш необработанный файл в миниатюре и сохраняет его для S3; всякий раз, когда вы загружаете новый необработанный файл.

+0

Да, я понимаю, что вы имеете в виду ... Я тоже был в этих мыслях, вокруг огня от стиля событий, при загрузке чего-то нового ... Но было бы здорово, если бы был способ просто прочитать нужную часть файла, чтобы получить предварительный просмотр jpg из raw-файла. Но предположим, что это может быть сложно, тогда .... – nickelman

+0

@nickelman проблема в том, что для чтения только частей с сервера (что вы можете сделать через свойство заголовка запроса диапазона) заключается в том, что он будет создавать значительные накладные расходы для каждого запрос/ответ, и было бы много сделать его медленным и не сэкономить на трафике. Я считаю, что ARW - это в основном TIFF, но в любом случае вы должны иметь возможность анализировать и обрабатывать формат вручную со всеми его оговорками. Я согласен с AkkarinZA, что лучшим решением является создание большого пальца на сервере (или клиенте) и его обслуживание. – K3N