只能从远程原始文件嵌入jpg?

时间:2016-12-14 19:04:23

标签: http image-processing metadata file-handling

假设我在远程服务器上有RAW图像,例如www.mydomain.com/DSC0001.ARW,我想提取“小”预览图像(jpg) )从那个原始文件,而不必下载整个原始文件,是否可能以某种方式?

2 个答案:

答案 0 :(得分:1)

让我先说一下:我不是图像处理专家。

回答你的问题

您可以显示已调整大小的图片,但这仍会下载整个文件。在我看来,这意味着最好的方法是在原始图像旁边保存该图像的预处理缩略图。如果您使用某些命名约定,例如DSC0001.ARW.thumbnail.png,则应该很容易找到它们。

AWS堆栈上可能的替代解决方案

如果您愿意参与某些代码和AWS,可能只是一个现实的解决方案。如果您使用AWS S3存储图像,则可以将事件发送到AWS Lambda以运行脚本,该脚本将原始文件处理为缩略图并将其保存到S3;无论何时上传新的原始文件。

答案 1 :(得分:0)

再次更新

好吧,看来您拥有原始文件的服务器实际上并不属于您,因此您无法像我建议的那样在服务器上提取预览图像...但是,您只能下载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 更简单。< / p>

以下是如何从命令行中的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,这意味着两个并发用户可能会发生冲突。< / p>

原始答案

如果您可以在服务器上运行 ImageMagick ,这很简单,您可以运行一个小小的PHP脚本,将图像名称作为参数,提取缩略图并向您发送JPEG

我认为你的意思是Sony Alpha原始图像。