【发布时间】:2017-01-05 23:38:14
【问题描述】:
假设我在远程服务器上有一个 RAW 图像,例如 www.mydomain.com/DSC0001.ARW,我想仅提取“小”预览图像(jpg ) 从那个原始文件中,而不必下载整个原始文件,这可能吗?
【问题讨论】:
-
抱歉 - 离线几天了。将尽快试用您的更新版本,然后返回,谢谢!
标签: http image-processing metadata file-handling
假设我在远程服务器上有一个 RAW 图像,例如 www.mydomain.com/DSC0001.ARW,我想仅提取“小”预览图像(jpg ) 从那个原始文件中,而不必下载整个原始文件,这可能吗?
【问题讨论】:
标签: http image-processing metadata file-handling
让我以此作为开头:我不是图像处理专家。
您可以显示调整大小的图像,但这仍会下载整个文件。在我看来,这意味着最好的方法是将该图像的预处理缩略图与原始图像一起保存。如果您使用诸如DSC0001.ARW.thumbnail.png 之类的命名约定,它们应该很容易找到。
如果您愿意参与一些代码和 AWS,这可能只是一个现实的解决方案。如果您使用 AWS S3 存储图像,您可以向 AWS Lambda 触发一个事件以运行一个脚本,该脚本将您的原始文件处理为缩略图并将其保存到 S3;每当您上传新的原始文件时。
【讨论】:
再次更新
好的,您拥有原始文件的服务器似乎实际上不是您的,因此您无法按照我的建议在服务器上提取预览图像...但是,您可以只下载 25MB 图像的一部分然后在本地提取。所以,在这里我只从我不拥有的服务器上的文件中下载前 1MB 到我的本地计算机上,然后在本地提取预览:
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 脚本)它比 ImageMagick 更容易安装。
以下是如何在命令行从 Sony ARW 文件中提取预览:
exiftool -b -PreviewImage -W! preview.jpg sample.arw
这会将预览从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");
?>
它会从名为image 的参数中提取预览并将其以JPEG 格式发回给您。
根据您的服务器设置和文件命名,调用将类似于:
http://yourserver/preview.php?image=sample.arw
请注意,如果服务器是多用户的,您将需要做更多的工作,因为我已将预览文件的名称固定为 preview.jpg,这意味着两个同时用户可能会发生冲突。
原答案
如果您可以在您的服务器上运行 ImageMagick,这很容易,您可以运行一个 PHP 小脚本,将图像名称作为参数,提取缩略图并向您发送 JPEG。
我猜你的意思是 Sony Alpha 原始图像。
【讨论】: