将VCF图像导出为JPEG

时间:2013-03-10 21:43:34

标签: export jpeg vcard

我创建了一个与iPhone的.vcf联系人,并通过电子邮件将文件发送给自己。在.vcf中,我拍了一张直接保存在电子名片中的照片,而不是手机内存中的照片。

在.vcf的源代码中,有一个代码部分,如下所示:

PHOTO;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/4QBYRXhpZgAATU0AKgAA

它继续......现在,我想得到这张照片并将其保存为.JPEG。任何想法如何做到这一点?

感谢。

6 个答案:

答案 0 :(得分:6)

在macOS中,使用“vi”和“base64。

的行命令很容易

例如,

导出“Apple Inc.”每个用户帐户附带的联系人。

  1. 使用vi手动删除其他行。
  2. 删除该行的标题和元数据
  3.   

    PHOTO; ENCODING = B; TYPE = JPEG:

    1. base64解码剩余文件
    2.   

      #base64 -D -i Apple \ Inc..vcf -o Apple_Logo.jpeg

答案 1 :(得分:4)

您应该使用提供vpim功能的vCard解析器(例如pull photo data from the vCard)。

答案 2 :(得分:4)

编码为Base64。你可以找到一个在线解码的工具。

我可以推荐Freeformatter.com的解码器,它可以保存为二进制文件。然后,您需要将该文件重命名为photo.jpg

答案 3 :(得分:1)

另一个vCard解析器是ez-vcard,它是用Java编写的(免责声明:我是作者)。

File file = new File("vcard.vcf");
VCard vcard = Ezvcard.parse(file).first();
for (PhotoType photo : vcard.getPhotos()){
  byte data[] = photo.getData();
  //save byte array to file
}

答案 4 :(得分:0)

http://www.sobolsoft.com/convertvcfjpg/与来自OSX的vCard一起使用,并取得了成功。

答案 5 :(得分:0)

因为这不是https://apple.stackexchange.com/我会建议一个快速的bash脚本,我用它来从命令行上的.vcf文件中提取图像:

UPDATE tablename 
SET `ID=2` = SUBSTRING(`ID=2`,LENGTH(`ID=1`)+1) 
WHERE LOCATE(`ID=1`,`ID=2`) = 1;

此脚本尝试提取base64数据,使用base64对其进行解码并创建映像文件。我在linux上发现#!/bin/bash #vcf_photo_extractor ver 20180207094631 Copyright 2018 alexx, MIT Licence if [ ! -f "$1" ]; then echo "Usage: $(basename $0) [path/]any/contact.vcf" exit 1 fi DATA=$(cat "$1" |tr -d "\r\n"|sed -e 's/.*TYPE=//' -e 's/END:VCARD.*//') NAME=$(grep -a '^N;' $1|sed -e 's/.*://') #if [ $(wc -c <<< $DATA) -lt 5 ];then #bashism if [ $(echo $DATA|wc -c) -lt 5 ];then echo "No images found in $1" exit 2 fi EXT=${DATA%%:*} if [ "$EXT" == 'BEGIN' ]; then echo "FAILED to extract $EXT"; exit 3; fi IMG=${DATA#*:} FILE=${1%.*} Fn=${FILE##*/} if [ -f "${FILE}.${EXT}" ]; then echo "Overwrite ${FILE}.${EXT} ? " read -r YN if [ "$YN" != 'y' ]; then exit; fi fi echo $IMG | base64 -id > ${FILE}.${EXT} || \ echo "Failed to output $NAME to ${FILE}.${EXT}" 工作但base64 -id犯了错误。

如果您是单行代码或代码高尔夫的粉丝,那么这可能会有效:

base64 -d

如果你想要更清洁的东西,马特布罗克的话 vCard_photo_extractor.sh可能就是你要找的东西。