标签: exiv2

ndk-build输出错误添加符号.文件格式错误'

我想在我的Android项目中使用用C++编写的exiv2库.为此,我尝试使用Android NDK交叉编译库.

对于交叉编译,我遵循以下步骤:

  1. 将ndk路径添加到变量PATH

    $ PATH="/home/patrycja/android-packages/ndk:${PATH}"
    $ export PATH 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装标准工具链,用于交叉编译适用于Android的C/C++.

    ./make-standalone-toolchain.sh --platform=android-21 --install-dir=/tmp/my-android-toolchain --ndk-dir='/home/patrycja/android-packages/ndk/' --toolchain=arm-linux-androideabi-4.9 --system=linux-x86_64
    
    Copying prebuilt binaries...
    Copying sysroot headers and libraries...
    Copying c++ runtime headers and libraries...
    Copying files to: /tmp/my-android-toolchain
    Cleaning up...
    Done.
    
    Run Code Online (Sandbox Code Playgroud)
  3. 设置一些环境变量,以便配置和构建过程将使用正确的编译器.

    $ export PATH=/tmp/my-android-toolchain/bin:$PATH
    $ export CC="arm-linux-androideabi-gcc"
    $ export CXX="arm-linux-androideabi-g++"
    $ export CFLAGS='-mthumb -O2' 
    $ export CXXFLAGS='-mthumb -O2' 
    $ export LDFLAGS='-Wl,--fix-cortex-a8' 
    $ export LIBS='-lstdc++ -lsupc++' 
    
    Run Code Online (Sandbox Code Playgroud)
  4. Bulid静态库和足够的标头

    ./configure --prefix=$(pwd)/build --host=arm-linux-androideabi --disable-shared --disable-xmp --disable-nls
    
    Run Code Online (Sandbox Code Playgroud)

结果我创建了'build'类别文件:

    ??? bin
    ?   ??? exiv2
    ??? include
    ?   ??? exiv2 …
Run Code Online (Sandbox Code Playgroud)

c++ android exiv2 android-ndk

6
推荐指数
1
解决办法
1万
查看次数

如何在python中使用gexiv2?

我刚刚为我的debian machiene编译了exiv2和gexiv2,现在我想开始使用gexiv2来编译使用python的IPTC数据.gexiv2网站提供以下代码:

from gi.repository import GExiv2
Run Code Online (Sandbox Code Playgroud)

但这已经导致:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named gi.repository
Run Code Online (Sandbox Code Playgroud)

我甚至不能导入gi所以我想我错过了另一个包!?我该怎么做才能使这项工作符合预期?

更新:我将操作系统升级到最新的debian版本.我现在可以导入gi,但是我仍然遇到GExiv2的问题.

导入GExiv2时发生以下错误:

>>>from gi.repository import GExiv2
ERROR:root:Could not find any typelib for GExiv2
Run Code Online (Sandbox Code Playgroud)

python gobject exiv2 pygobject pyexiv2

6
推荐指数
1
解决办法
5590
查看次数

PNG图像是否支持XMP元数据?

我一直试图了解XMP元数据在过去几个小时内如何处理PNG文件,但无法完全理解它.

如果我用Photoshop创建一个PNG图像,保存并打开文件信息对话框(文件>文件信息或Ctrl + Alt + Shift + I),我可以看到一些XMP属性,如CreateDate,CreatorToolModifyDate.

现在如果我尝试用exiv2打开文件并读取元数据,它似乎找不到任何东西:

auto image = Exiv2::ImageFactory::open(imagePath);
image->readMetadata();
Exiv2::XmpData &xmpData = image->xmpData();
Run Code Online (Sandbox Code Playgroud)

同样的exiftool -xmp:all myImage.png,exiv2 -P X myImage.png甚至是GIMP(但我认为它在内部使用exiv2).

如果在使用Photoshop再次保存时未删除任何添加的元数据,则不会出现此问题.如果不清楚,打开图像并使用exiv2添加XMP元数据,保存它,在Photoshop和文件信息对话框中打开图像,之前添加的属性不再存在.

奇怪的是,如果你使用JPEG图像完成整个过程,一切都按预期工作:所有属性都可以从Photoshop和exiv2中看到,如果我尝试使用exiv2添加元数据(使用相同的代码),它会出现在Photoshop也是如此.

我错过了一些明显的东西吗 PNG有什么特别的东西不适合JPEG吗?我没有尝试使用Adobe的SDK来编辑XMP数据,这样更好吗?

任何帮助都会非常感激,因为这开始让我发疯:/

编辑:阅读这篇文章后,我尝试使用Adobe Bridge,它似乎没有显示与Photoshop相同的属性.如果我使用Exiv2添加XMP元数据,它们将显示在Bridge中,但如果我在Photoshop中修改图像,则元数据将再次从Bridge中删除.

photoshop xmp metadata exiv2

6
推荐指数
1
解决办法
1749
查看次数

如何在virtualenv上安装GExiv2?

我安装了这个库:

sudo apt-get install libexiv2-dev libgexiv2-2 gir1.2-gexiv2-0.4
Run Code Online (Sandbox Code Playgroud)

我能够加载Python模块:

from gi.repository import GExiv2
Run Code Online (Sandbox Code Playgroud)

问题来自virtualenv.我需要在virtualenv中使用这个库,我不知道如何安装它,因为没有pip这个包.

我试图在系统范围内安装的库和virtualenv lib文件夹之间建立一个符号链接,但没有结果:

lrwxrwxrwx 1 dnavarro dnavarro   25 jul  4 15:42 girepository-1.0 -> /usr/lib/girepository-1.0
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

python image exiv2 python-imaging-library python-2.7

5
推荐指数
1
解决办法
2119
查看次数

不管任何元数据,是否有(命令行工具)可以计算 .NEF(还有 .CR2、.TIFF)的 MD5 哈希?

无论如何(命令行工具)是否可以计算 .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 哈希值。

image-processing command-line-tool exiv2 dcraw exiftool

4
推荐指数
1
解决办法
1354
查看次数

如何用引号转义php exec()命令

我在Linux上使用Exiv2命令行工具来编辑图像元数据,如下所示:

exiv2 -M"set Iptc.Application2.Caption String This is my caption....." modify IMG.jpg
Run Code Online (Sandbox Code Playgroud)

我想使用用户提供的标题从PHP执行此操作。如果用户不输入任何特殊字符,这将起作用:

exec('/usr/local/bin/exiv2 -M"set Iptc.Application2.Caption String '.$caption.'" modify IMG.jpg');
Run Code Online (Sandbox Code Playgroud)

我需要允许用户使用特殊字符,例如单引号和双引号。我想使用escapeshellcmd()来防止恶意数据。我如何正确地转义命令和参数,以便其起作用?我尝试了很多选择,但我做对了。

php escaping exec exiv2

3
推荐指数
1
解决办法
1万
查看次数