标签: iptc

读取图像IPTC数据

我在读取某些图像的IPTC数据时遇到了一些麻烦,我之所以要这样做,是因为我的客户已经在IPTC数据中包含了所有关键字,并且不想在现场。

因此,我创建了一个简单的脚本来读取它们:

$size = getimagesize($image, $info);

if(isset($info['APP13'])) {
    $iptc = iptcparse($info['APP13']);

    print '<pre>';
        var_dump($iptc['2#025']);
    print '</pre>';
}
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这种方法效果很好,但是在处理某些图像时遇到了麻烦。

注意:未定义索引:2#025

虽然我可以在Photoshop中清楚地看到关键字。

是否有任何体面的小型图书馆可以读取每张图片中的关键字?还是我在这里做错了什么?

iptc exif image

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

将图像元数据(EXIF/TIFF/IPTC)写入OS X中的图像文件

我正在创建一个照片编辑应用程序,到目前为止,我已成功地从图像文件中读取元数据(在得到这个问题的答案之后:在OS X上打开NSImage时从EXIF读取相机数据).

source = CGImageSourceCreateWithURL((__bridge CFURLRef)url, NULL);
NSDictionary *props = (__bridge_transfer NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL);
Run Code Online (Sandbox Code Playgroud)

这会将图像文件的所有元数据复制到字典中,并且它可以很好地工作.但是,我无法找到如何将此元数据写回新创建的NSImage(或图像文件).以下是我保存文件的方法(其中img没有元数据的NSImage实例,self.cachedMetadata是从初始图像读取的字典):

NSBitmapImageRep *rep = [NSBitmapImageRep imageRepWithData:[img TIFFRepresentation]];
[rep setProperty:NSImageEXIFData withValue:self.cachedMetadata];
NSData *data;
if([[fileName lowercaseString] rangeOfString:@".png"].location != NSNotFound){
    data = [rep representationUsingType:NSPNGFileType properties:nil];
}else if([[fileName lowercaseString] rangeOfString:@".tif"].location != NSNotFound){
    data = [rep representationUsingType:NSTIFFFileType properties:nil];
}else{ //assume jpeg
    data = [rep representationUsingType:NSJPEGFileType properties:@{NSImageCompressionFactor: [NSNumber numberWithFloat:1], NSImageEXIFData: self.cachedMetadata}];
}

[data writeToFile:fileName atomically:YES];
Run Code Online (Sandbox Code Playgroud)

我该如何编写元数据?我以前只为JPEG编写了EXIF(字典只是以前的EXIF),但由于EXIF缺少初始图像所具有的一些字段(IPTC和TIFF标签),我需要更改我的阅读方法.现在我拥有所有数据,但我不知道如何将其写入新创建的图像文件.

谢谢,可以.

macos iptc exif objective-c nsimage

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

校验和 JPEG 数据(不是整个文件)

是否有结束 exif / end-of-xmp / end-of-iptc / start-of-data 标记,我可以用它来获取 jpg/jpeg(和其他图像格式)的数据部分的校验和?

xmp jpeg checksum iptc exif

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

JPEG文件大小标记,插入字节,IPTC元数据

我有兴趣在字节级别手动将IPTC字段注入JPG文件.JPEG文件具有多个具有可观大小标记的元数据段.IPTC的细分容器是:

App13 - 以.开头FF ED XX XX ..

8BIM IPTC文本元数据 - 以38 42 49 4D 04 04 00 00 00 00 XX XX ..

IPTC字段以1C 02 50 XX XX ..(0x50 = 80,IPTC字段#80)开始.

(XX XX = 2个字节的长度字,描述了所提到的段数据的大小).

JPEG文件和元数据中是否还有其他尺寸标记可供查找?在使用自定义IPTC字段附加元数据片段时是否必须增加其大小?

如何添加可用于已包含IPTC段的所有JPEG图像的自定义元数据字段(例如#225)?

在C#中工作,但这是关于字节操作的问题所以我猜语言并不重要.

byte jpeg iptc metadata bytecode-manipulation

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

使用CGImageProperties获取EXIF属性

我希望能够在JPEG的元数据中添加文本注释,并能够从iphone应用程序中读取它.

我认为这很简单,因为ios4包含对EXIF信息的支持.所以我使用一个名为used AnalogExif的Windows工具添加元数据,并使用以下方法从我的应用程序中读回:

NSData *jpeg = UIImageJPEGRepresentation(myUIImage,1.0);

CGImageSourceRef  source = CGImageSourceCreateWithData((CFDataRef)jpeg, NULL);
NSDictionary *metadata = (NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL);

NSMutableDictionary *metadataAsMutable = [[metadata mutableCopy]autorelease];
[metadata release];

NSMutableDictionary *EXIFDictionary = [[[metadataAsMutable objectForKey:(NSString *)kCGImagePropertyExifDictionary]
Run Code Online (Sandbox Code Playgroud)

这有用......到了一点:)

我在元数据字典中得到的是:

(gdb) po metadata
{
   ColorModel = RGB;
   Depth = 8;
   Orientation = 1;
   PixelHeight = 390;
   PixelWidth = 380;
   "{Exif}" =     {
      ColorSpace = 1;
      PixelXDimension = 380;
      PixelYDimension = 390;
   };
   "{JFIF}" =     {
      DensityUnit = 0;
      JFIFVersion = (
        1,
        1
      );
      XDensity = 1; …
Run Code Online (Sandbox Code Playgroud)

xcode iptc exif uiimage cgimagesource

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

如何将IPTC数据从一个图像复制到另一个图像?

我正在开发一个图像处理器脚本来基本调整图像大小.问题是,当我制作调整大小的图像副本时,它也不会复制IPTC数据.所以我一直在检查IPTC PHP函数(iptcparse和iptcembed),但我很困惑.使用iptcparse非常简单.它将所有数据转换为数组,然后使用print_r将其打印出来.但是所谓的有用的是iptcembed,因为它允许你(如名字所示)在你的图像上嵌入IPTC.从php.net看这个例子我不太明白.我是否必须手动创建我的阵列才能将其嵌入到新图像中.我想有一种简单的方法可以复制一张图像IPTC的数据并将其嵌入到其他图像中.

任何答案都将受到欢迎.提前致谢.

php iptc metadata

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

在php中获取jpg图像的iptc元数据

我正在尝试使用 php 从 jpg 图像(http://pepeliana.com/images/DSC4008.jpg)中获取一些 iptc 元数据。引用图像的标题元数据设置为“测试”。我已经阅读了 php 手册和似乎可以完成工作的两个函数 - iptcparse() 和 exif_read_data()。这两个功能都在php中启用。但是,对于我的一生,我无法弄清楚为什么这两个函数都没有返回所需的数据。这是我尝试过的示例代码,我还应该提一下,我还在几张具有 Title iptc 元数据的图像上尝试了此代码(因此排除了图像损坏或元数据设置不当的可能性):

<?php 
$size = getimagesize ('DSC4008.jpg', $info);       
 if(is_array($info)) {   
    $iptc = iptcparse($info["APP13"]);
    foreach (array_keys($iptc) as $s) {             
        $c = count ($iptc[$s]);
        for ($i=0; $i <$c; $i++)
        {
            echo $s.' = '.$iptc[$s][$i].'<br>';
        }
    }                 
}
 ?>
Run Code Online (Sandbox Code Playgroud)

还:

<?php
$exif = exif_read_data('DSC4008.jpg', 0, true);
echo $exif['WINXP']['Title'];
?>
Run Code Online (Sandbox Code Playgroud)

如您所见,这很简单,但是,我无法返回我想要的东西。显然我一定遗漏了一些明显简单的东西,不是吗?请帮忙!

php iptc metadata

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

是否有任何 Python3 兼容模块来读/写 IPTC 数据?

我已经尝试过IPTCInfo3。但是安装成功后

pip3 install IPTCInfo
Run Code Online (Sandbox Code Playgroud)

我收到导入错误:

Python 3.5.2 (default, Oct 11 2016, 04:59:56) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin

from iptcinfo import IPTCInfo

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
ImportError: No module named 'iptcinfo'
Run Code Online (Sandbox Code Playgroud)

python iptc module python-3.x

4
推荐指数
2
解决办法
3559
查看次数

请推荐一个用于将IPTC数据写入图像的Node模块?

我有一个 Node.js 服务器,它的工作是下载 JPEG 图像,将某些数据写入几个 IPTC 字段(例如Iptc.Application2.Caption)并将图像传递给另一个服务。

理想情况下,我想将 IPTC 数据写入内存缓冲区(而不将图像写入本地文件系统)。如果做不到这一点,我可以采用一种解决方案,在该解决方案中我下载、将文件存储到 FS,然后应用 IPTC 数据。

我已经使用https://github.com/dberesford/exiv2node 进行了这项工作,但它不适用于 Node.js v10。而且它依赖于exiv2 C++ 库,这使得运行容器化变得很麻烦。

所以我的问题是:是否有一个像样的 Node.js 模块可以实现 IPTC 数据写入,并且不依赖于某些怪物 C 库?

iptc exif image node.js

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

JpegBitmapEncoder.Save() 在使用元数据写入图像时抛出异常

我正在构建一个 WPF 桌面应用程序来帮助我组织照片以发布到 Facebook。以下是我在新位置创建照片副本并添加标题(EXIF + IPTC + XMP)的代码:

    private void SaveImageAs(string currPath, string newPath, bool setCaption = false, string captionToSet = "")
    {
        System.IO.FileStream stream = new System.IO.FileStream(currPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
        JpegBitmapDecoder decoder = new JpegBitmapDecoder(stream, BitmapCreateOptions.None, BitmapCacheOption.None);
        BitmapFrame bitmapFrame = decoder.Frames[0];
        BitmapMetadata metadata = bitmapFrame.Metadata.Clone() as BitmapMetadata;
        stream.Close();

        if (setCaption)
        {
            // if we want to set the caption, do it in EXIF, IPTC, and XMP

            metadata.SetQuery("/app1/ifd/{uint=270}", captionToSet);
            metadata.SetQuery("/app13/irb/8bimiptc/iptc/Caption", captionToSet);
            metadata.SetQuery("/xmp/dc:description/x-default", captionToSet);
        }

        MemoryStream memstream = new MemoryStream();   // …
Run Code Online (Sandbox Code Playgroud)

c# wpf iptc exif metadata

2
推荐指数
1
解决办法
1888
查看次数

从Cocoa中的图像中读取EXIF/IPTC信息

我无法找到有关如何从Cocoa中的图像读取EXIF/IPTC信息的最新示例.有什么可以轻松完成的,或者我应该使用外部工具作为exiftool并使用NSTask启动它?

谢谢 !

macos xcode cocoa iptc exif

0
推荐指数
1
解决办法
5876
查看次数