2014-09-01 69 views
0

我想在Jpeg圖像中寫入XPKeywords。直到現在,我正在使用Sansaleen java api在Jpeg圖像中編寫Exif標籤。我能夠編寫大部分標籤,如主題,評論,作者,評級,但我無法編寫Windows XP關鍵字。我使用下面的代碼:在Exif中寫入XPKeywords

public static TiffOutputField getTiffOutputFieldKeyword(
     TiffOutputSet outputSet, String metaDataToChange) { 
    TiffOutputField imageHistoryPre = outputSet 
      .findField(TiffConstants.EXIF_TAG_XPKEYWORDS); 
    if (imageHistoryPre != null) { 
     outputSet.removeField(TiffConstants.EXIF_TAG_XPKEYWORDS); 
    } 

    TiffOutputField tiffOutputField = new TiffOutputField(
      TiffConstants.EXIF_TAG_XPKEYWORDS, 
      TiffFieldTypeConstants.FIELD_TYPE_BYTE, 
      metaDataToChange.length(), metaDataToChange.getBytes("UTF-16")); 

    return tiffOutputField; 
} 

我用Google搜索這個問題,才知道,XP_Keyword接受UCS2編碼特殊,所以我已經更新了我的代碼。但仍然無法編寫完整的標籤。標籤是分號分隔的。

請讓我知道是否存在上述問題的任何解決方案,或者是否有任何其他的Java/Android的lib可以在Jpeg文件中寫入標籤。

回答

0

得到它的工作:

public static TiffOutputField getTiffOutputFieldKeyword(
    TiffOutputSet outputSet, String metaDataToChange) { 
TiffOutputField imageHistoryPre = outputSet 
     .findField(TiffConstants.EXIF_TAG_XPKEYWORDS); 
if (imageHistoryPre != null) { 
    outputSet.removeField(TiffConstants.EXIF_TAG_XPKEYWORDS); 
} 

TiffOutputField tiffOutputField = new TiffOutputField(
     TiffConstants.EXIF_TAG_XPKEYWORDS, 
     TiffFieldTypeConstants.FIELD_TYPE_BYTE, 
     metaDataToChange.getBytes("UTF-16").length, metaDataToChange.getBytes("UTF-16")); 

return tiffOutputField; 
} 

只需使用字節長度 「UTF-16」,然後寫。另外,請確保您修剪角色不包含任何空格。此外,請嘗試將字符串與分號(;)分隔爲默認情況下,Windows採用分號分隔的關鍵字。