asp.net - 将图像上传到服务器后丢失图像关键字

问题描述:

我将图像上传到服务器,然后处理图像。有趣的是,上传后的图像图像关键字丢失。虽然其他图像属性在那里。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的实际文件之外。 –

有可能是你的问题的两个原因:

  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”一无所知,但是你所说的可能是一个原因。我会试一试。 –