假设我在远程服务器上有一个原始图像,比如www.mydomain.com/dsc001.arw,我只想从原始文件中提取“小”预览图像(jpg),而不必下载整个原始文件,这有可能吗?

最佳答案

再次更新
好吧,看起来你拥有原始文件的服务器实际上不是你的,所以你不能像我建议的那样提取服务器上的预览图像…但是,您可以只下载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

根据摄像机及其设置等,您可能需要尝试下载多少文件。
更新的答案
实际上,使用ExfToo工具更容易在服务器上提取预览(只是Perl脚本),安装得比IMAMGEGK要简单得多。
下面是如何在命令行从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。
我猜你是指索尼阿尔法的原始图像。

关于http - 仅从远程原始文件嵌入jpg?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41150235/

10-14 18:39
查看更多