2016-06-10 3 views
0

URL에서 이미지를 다운로드하고 저장합니다. 이미지 형식은 다양 할 수 있습니다. 이미지를 마우스 오른쪽 단추로 클릭하고 속성을 선택한 다음 세부 정보 탭을 선택하십시오. Comments 필드가 있습니다. 이미지를 저장하는 동안 해당 필드에 텍스트를 추가하고 싶습니다. 가능한가?C에서 속성을 사용하여 이미지를 저장하는 방법

using (WebClient webClient = new WebClient()) 
{ 
    webClient.DownloadFile("http://www.example.com/1.jpg", "1.jpg"); 
} 

enter image description here

+3

보기 : [link] (http://dejanstojanovic.net/aspnet/2014/november/adding-extra-info-to-an-image-file/) – Legends

+0

아니요 그가 필요로하는 것과 다릅니다 1) 링크에서 모든 이미지를 다운로드하십시오. 그것은 tiff, jpg, png 등이 될 수 있습니다. 2) 이미지 원시 데이터를 읽으려면 이미지를 디코딩해야합니다. 3) 원시 데이터와 u가 참조를 제공 한 메타 데이터를 포함하는 jpg를 생성해야합니다. –

답변

2

Windows의 속성 시스템이 복잡한 이야기를 가지고, 당신은 여기에 대한 자세한 정보를 찾을 수 있습니다 : Extracting Windows File Properties (Custom Properties) C#

당신은 Microsoft.WindowsAPICodePack.Shell nuget 패키지를 시도 할 수 :

var file = ShellFile.FromFilePath("your image.jpg"); 
    using (var writer = file.Properties.GetPropertyWriter()) 
    { 
     writer.WriteProperty(file.Properties.System.Comment, "hello"); 
    } 

그러나 이미지의 경우 셸은 파일 자체에 추가 속성을 쓸 수 없습니다. JPG를 제외한 대부분의 이미징 코덱은 이러한 '주석'메타 데이터를 지원하지 않습니다.

static void Main(string[] args) 
{ 
    var storage = new CompoundStorage("your image.png", false); // open for write 
    storage.Properties.Comments = "hello"; // change well-known "comments" property 
    storage.CommitChanges(); 
} 

그것은 작동하고 파일에없는 stricly 속성 정보를 쓸 수 있지만 NTFS (에 순수한에도 작동합니다 : 내가이 경우 제안하는이 CodeFluentRuntime nuget 패키지의 CompoundStorage 클래스를 사용하고, 여기에 예입니다 일반 .txt 파일). 파일을 다시 읽고 모든 속성을 검색 할 경우, 다음과 같이, 당신은 그것을 볼 수 :

이제
static void Main(string[] args) 
{ 
    var storage = new CompoundStorage("consent.png"); // open for read 
    foreach (var prop in storage.Properties) 
    { 
     Console.WriteLine(prop.Name + "=" + prop.Value); 
    } 
} 

문제는 Windows, 당신이 표시되지 않습니다 귀하의 질문에 표시 쉘 속성 시트의 최신 버전입니다 Comments 속성 (예 : Windows 10에서 실행 중이며 제대로 작성되었지만 표시되지 않습니다). 불행히도 이미지 파일에는 다른 많은 옵션이 없습니다.

관련 문제