我是来自葡萄牙的学生对我必须处理的项目有些怀疑.
我的最终目标是使用LaTeX创建一个pdf目录,该目录使用exiftool存储有关文件的信息.
到目前为止,我已经设法将音频与视频文件分开,并将他们的exiftool'ed信息存储在一个文件中,但它将它们增加了.
例如:
======== Cartoon Battle.mp3
-ExifToolVersion=8.60
-FileName=Cartoon Battle.mp3
-Directory=.
-FileSize=4.0 MB
-FileModifyDate=2011:12:13 09:46:25+00:00
-FilePermissions=rw-rw-r--
-FileType=MP3
-MIMEType=audio/mpeg
-MPEGAudioVersion=1
-AudioLayer=3
-AudioBitrate=320 kbps
-SampleRate=48000
-ChannelMode=Stereo
-MSStereo=Off
-IntensityStereo=Off
-CopyrightFlag=False
-OriginalMedia=False
-Emphasis=None
-ID3Size=113441
-Title=Cartoon Battle
-Artist=Kevin MacLeod
-Year=2007
-BeatsPerMinute=130
-Genre=Unclassifiable
-Comment=(iTunPGAP) 0
-EncodedBy=iTunes v7.0.2.16
-Comment=(iTunNORM) 000001F7 0000014B 00001DBD 00000B18 000154C8 00000780 00008169 00008180 00000780 00000780
-Comment=(iTunSMPB) 00000000 00000210 00000A84 00000000004A606C 00000000 003DE780 00000000 00000000 00000000 00000000 00000000 00000000
-Album=Far East
-Composer=Kevin MacLeod
-PictureFormat=JPG
-PictureType=Other
-PictureDescription=
-Picture=(Binary data 91855 bytes, use -b option to …Run Code Online (Sandbox Code Playgroud) 我正试图让exiftool在我的专用服务器上工作.问题是PHP exec似乎与命令以用户身份运行时不同.奇怪的是,PHP显示为我登录的同一用户,但它与系统命令的行为不同.
奇怪的是,在我的本地主机上一切都很好,但在我的服务器上却不行.
如上所述,通过ssh登录的exiftool命令运行正常.
但是在php测试脚本中运行(注意我已经在每个测试目录上安装了exiftool,并且它通过ssh运行),没有任何东西可以访问,尽管它以用户orangeman运行...
它失败了
这是一个更新 - 整天都在这里:
在shell上:
-bash-4.1$ which exiftool -a
~/perl5/bin/exiftool
/usr/bin/exiftool
~/perl5/bin/exiftool
Run Code Online (Sandbox Code Playgroud)
在PHP中 shell_exec('exiftool -a');
/usr/bin/exiftool
Run Code Online (Sandbox Code Playgroud)
以下是该文件链接到的内容:
lrwxrwxrwx 1 root root 33 May 15 02:10 exiftool -> /home/orangeman/perl5/bin/exiftool
Run Code Online (Sandbox Code Playgroud)
我也试过创建各种各样的符号链接,通过putenv();php 篡改主要的$ PATH变量......我真的在黑暗中.适用于localhost,而不是专用服务器.
我用赏金更新了这个 - 这是一个严重的问题.
我在专用服务器上,问题如上所述.
UPDATE Per @gcb建议,我能够打印出php的exec()函数运行系统命令时发生的错误,但没有效果.
PHP
<?php
exec('exiftool 2>&1', $output, $r);
var_dump($output, $r);
?>
Run Code Online (Sandbox Code Playgroud)
输出:
array(2) {
[0]=>
string(230) "Can't locate Image/ExifTool.pm in @INC (@INC contains: /bin/lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /bin/exiftool line 33."
[1]=> …Run Code Online (Sandbox Code Playgroud) 我一直在整理我的家庭照片,其中包括一些来自我父亲的恢复备份驱动器.许多照片都被命名为file000268.jpg等,所以我考虑重命名实用程序,最后使用exiftool,因为我可以在shell中使用它并编写基于它的脚本(我使用Mac和Ubuntu).我有一个简单的脚本工作,将照片重命名为拍摄日期并且效果很好,但我想在日期前添加相机品牌/模型,这将很容易帮助我识别我爸爸的照片与他的图片中的照片设计客户(我知道我的父母有一台柯达相机).
以下是使用日期重命名照片的工作脚本:
exiftool '-FileName<DateTimeOriginal' -d "%Y-%m-%d %H.%M.%S%%-c.%%e" /directory/
Run Code Online (Sandbox Code Playgroud)
这导致照片命名如下:
'2002-12-16 14.20.56.jpg'
我只想在年份前添加相机品牌/型号:
'SONY CYBERSHOT 2002-12-16 14.20.56.jpg'
在此先感谢任何帮助,我一直在做大量的谷歌搜索,并一直很困惑.
无论如何(命令行工具)是否可以计算 .NEF(还有 .CR2、.TIFF)的 MD5 哈希,而不管任何元数据,例如 EXIF、IPTC、XMP 等等?
一旦我们更新了图像文件中的任何元数据,MD5 哈希值应该相同。
我搜索了一段时间,最接近的解决方案是:
exiftool test.nef -all= -o - -m | md5
Run Code Online (Sandbox Code Playgroud)
但是 'exiftool -all=' 仍然在输出文件中保留一组 EXIF 标签。如果我更新剩余的标签,可以更改 MD5 哈希值。
当我使用 Windows 属性工具从带有图像的文件夹中删除 EXIF 数据时,方向(已手动更改)丢失。因此,当我想将所有这些图片放在网站上时,它们无法正确显示。问题是此时文件夹的大小急剧增加,再次手动更改。那么,当您一步删除所有 EXIF 数据时,有没有办法保留方向标签?
提前致谢。
我有很多以日期格式命名的照片,但EXIF日期不匹配。
例如 2016-12-16_20-20-29.jpg
EXIFTOOL我运行它们几乎可以覆盖日期,但它与确切的日期格式不匹配。
exiftool "-datetimeoriginal<filename" ./
Run Code Online (Sandbox Code Playgroud)
这会将日期设置为正确的日历日,但忽略时间。
exiftool "-datetimeoriginal<filename" -d "%Y-%M-%D_%H-%M-%S.%%e" ./
Run Code Online (Sandbox Code Playgroud)
我相信-d参数设置了一种数据格式,但是这返回为错误Warning: Error parsing time in ExifIFD:DateTimeOriginal (PrintConvInv)
这是使用正确的方法吗?
我想留下Google照片,并且已经使用Google Takeout下载了所有照片。现在,我有一大堆包含json文件(我认为包含exif数据)和图像的文件夹。结构如下所示:home / user / Billeder / Takeout / Google Photos / 2011-06-09 / file.json。主页/用户/ Billeder / Takeout(2)/ Google相册/2011-07-09/file.json。
我想将json数据与正确的图像结合起来,并在与它们的创建日期相对应的文件夹中组织图像。我一直在看Exiftool,但是到目前为止找到的所有答案仅显示了如何针对单个图像执行此操作。我正在寻找的是一种将所有数据与正确的图像批量合并的方法。
我正在尝试在linux命令行中执行此操作。有没有办法做到这一点?
我正在使用 EXIF 工具使用以下命令复制所有 EXIF 标签
exiftool -TagsFromFile file1 file2
Run Code Online (Sandbox Code Playgroud)
但是如果源文件夹中已经存在名为 file2 的文件,我需要 EXIF 工具来替换它。目前,它正在将文件重命名为 _orginal
我怎样才能做到这一点?
所以我使用exiftool -all=命令行工具从图像中删除元数据。但是,当我打印结果图像的元数据时,我得到了这个:
$ exiftool myimage.jpg
ExifTool Version Number : 11.30
File Name : myimage.jpg
Directory : out
File Size : 2.8 MB
File Modification Date/Time : 2019:05:16 03:34:02-07:00
File Access Date/Time : 2019:05:16 03:34:02-07:00
File Inode Change Date/Time : 2019:05:16 03:34:02-07:00
File Permissions : rw-r--r--
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
DCT Encode Version : 100
APP14 Flags 0 : [14]
APP14 Flags 1 : (none)
Color Transform : YCbCr
Image …Run Code Online (Sandbox Code Playgroud) 我有一个包含 9000 万张图像的文件夹。我有一个表,其中有一列file_path包含每个文件的完整路径。我需要读取文件夹中所有图像的高度和宽度。并将结果保存为可以读入R的表格。
我尝试过exifr在 R 中使用该包(用于exiftool完成工作),但速度很慢(扫描我的文件夹需要 3 小时以上)。有没有更快的方法来实现我的目标?我并不局限于使用本机R函数,但希望能够R使用不同语言中的 ifsystem或来调用该工具system2。
library(exifr)
dat<-data.frame(file_path = list.files("path/to/folder",
pattern =".jpg$",
full.names = TRUE,
recursive = TRUE))
im_dims<-read_exif(dat$file_path,tags = c("ExifImageWidth", "ExifImageHeight"))
Run Code Online (Sandbox Code Playgroud)