2016-09-26 44 views
13

我將圖像上傳到服務器,然後處理圖像。有趣的是,上傳後的圖像圖像關鍵字丟失。雖然其他圖像屬性在那裏。asp.net - 將圖像上傳到服務器後丟失圖像關鍵字

enter image description here

沒有與解析標籤沒有問題,因此請忽略下面的代碼片段。

using (var xmp = Xmp.FromFile(workingFilePath, XmpFileMode.ReadOnly)) 
{ 
    var iptc = new Iptc(xmp); 
    var Keywords = iptc.Keywords; 
} 

注:我使用FineUploader上傳圖片。

FineUploader配置 -

var manualUploader = new qq.FineUploader({ 
    element: document.getElementById('fine-uploader-manual-trigger'), 
    template: 'qq-template-manual-trigger', 
    request: { 
     endpoint: '/image/uploadimage', 
     params: { 
      datestamp: datetimeStamp 
     } 
    }, 
    callbacks: { 
    }, 
    autoUpload: false, 
    multiple: true 
}); 

qq(document.getElementById("trigger-upload")).attach("click", function() { 
    manualUploader.uploadStoredFiles(); 
}); 

Fineuploader日誌 -

[Fine Uploader 5.10.1] Received 1 files. 
[Fine Uploader 5.10.1] Attempting to validate image. 
[Fine Uploader 5.10.1] Generating new thumbnail for 0 
[Fine Uploader 5.10.1] Attempting to draw client-side image preview. 
[Fine Uploader 5.10.1] Attempting to determine if _DSE8404.jpg can be rendered in this browser 
[Fine Uploader 5.10.1] First pass: check type attribute of blob object. 
[Fine Uploader 5.10.1] Second pass: check for magic bytes in file header. 
[Fine Uploader 5.10.1] '_DSE8404.jpg' is able to be rendered in this browser 
[Fine Uploader 5.10.1] Moving forward with EXIF header parsing for '_DSE8404.jpg' 
[Fine Uploader 5.10.1] EXIF Byte order is little endian 
[Fine Uploader 5.10.1] Found 10 APP1 directory entries 
[Fine Uploader 5.10.1] Successfully parsed some EXIF tags 
[Fine Uploader 5.10.1] Sending simple upload request for 0 
[Fine Uploader 5.10.1] xhr - server response received for 0 

編輯: 看起來像我發現這個問題。在標籤中有一些冰島字符。這就是問題所在。任何人都知道如何解決此問題!

最新編輯 如果這些標籤已經從Adobe Photoshop Lightroom添加,然後面臨問題。但是,如果通過更新屬性從Windows機器添加相同的標籤,它的工作原理!

+0

請顯示您的好上傳配置 –

+0

@ RayNicholus - 添加在上面的文章 –

+0

Fine Uploader絕對沒有錯在這裏。除非啓用縮放,否則該文件在上載前不會被任何方式操縱(在這裏情況並非如此)。其他的東西一定會導致你的問題。我的猜測是「標籤」不是圖像的EXIF/XMP數據的一部分。可能是因爲它存儲在Windows的實際文件之外。 –

回答

3

有可能是你的問題的兩個原因:

  1. 在某一時刻,您重寫您的圖片,可能與一類或者不妥善處理標籤或帶他們出去,因爲它的配置。
    如果您只保存從客戶端收到的確切二進制內容,您還將檢索您的原始標籤,前提是您的圖像文件格式符合您的預期。

  2. 如果您的圖像文件的存儲方式與您所期望的不同,則可能無法檢索標籤,具體取決於您提取標籤的方式。
    例如,JPG/JPEG標籤可以以各種方式存儲(XMP一個)。 查看following link瞭解更多詳情。您會看到有其他方式來存儲標籤(例如EXIF,Extended XMP,QVCI,FLIR)。
    要檢索這些標籤,您必須根據它們嵌入圖像文件的方式來解析它們。
    從您發佈的服務器端代碼,您似乎只解析XMP標記。取決於用於對原始圖像進行編碼的軟件,標籤可以以替代格式存儲。

雖然它看起來很明顯,我的建議是:

  1. ,以確保您的工作流程不涉及客戶端發送的內容之間的任何明確隱含圖像處理到保存在服務器上的內容。
  2. 也就是說,您還必須確保您使用適當的方式提取標籤,具體取決於其格式。

JPEG由於可能存儲的各種方式,文件真的很難正確處理。

+0

在服務器端只需獲取流並將其寫入文件作爲圖像。經過進一步調查發現,如果這些標籤是從Adobe Photoshop Lightroom中添加的,那麼就面臨這個問題。如果我們從Windows機器屬性窗口添加相同的標籤,它工作正常。 –

+1

@AbdulAhad我編輯了我的回答來覆蓋這個。您可能試圖以未用於存儲它們的格式讀取標籤。例如'Windows machine'可以將它們存儲在'XMP'中,但是'Adobe Photoshop Lightroom'可以將它們存儲在'EXIF'中。 –

+1

其實我對「Adobe Photoshop Lightroom」一無所知,但是你所說的可能是一個原因。我會試一試。 –