2009-08-05 11 views
5

EXIF ​​डेटा खोए बिना .NET का उपयोग करके छवियों का आकार बदलने का सबसे अच्छा तरीका क्या है? मैं .NET 2 सिस्टम का उपयोग करने के साथ ठीक हूं। ड्रॉइंग। * कक्षाएं, डब्ल्यूपीएफ कक्षाएं, या ओपन-सोर्स लाइब्रेरीज़।EXIF ​​डेटा खोने के बिना .NET के साथ एक छवि का आकार बदलें

अब इसे संभालने का एकमात्र आसान तरीका है ग्राफिक्स.फ्रॉम इमेज (.NET 2) का आकार बदलने के लिए और ओपन सोर्स लाइब्रेरी के साथ EXIF ​​डेटा को मैन्युअल रूप से फिर से लिखना (डेटा का प्रत्येक भाग एक एक करके)।

+0

मुझे कोई EXIF ​​डेटा खोने के बिना आकार बदलने की विशेषता CodePlex पर एक परियोजना कहा,: http://tidytinypics.codeplex.com/ – TigrouMeow

उत्तर

3

आकार बदलने से पहले EXIF ​​डेटा निकालने का आपका सुझाव, और फिर EXIF ​​डेटा को दोबारा डालने का एक सभ्य समाधान जैसा लगता है।

EXIF ​​डेटा केवल जेपीईजी और टीआईएफएफ जैसे प्रारूपों के लिए परिभाषित किया जा सकता है - जब आप आकार बदलने के लिए ग्राफिक्स ऑब्जेक्ट में ऐसी छवि लोड करते हैं, तो आप अनिवार्य रूप से छवि को नियमित बिटमैप में परिवर्तित कर रहे हैं। इसलिए, आप EXIF ​​डेटा खो देते हैं।

सी # here का उपयोग कर EXIF ​​निष्कर्षण के बारे में थोड़ा संबंधित धागा।

+0

ठीक है मैं मेरे समाधान को तब रखा, यह काफी अच्छा काम कर रहा है, यह कुछ भी नहीं है, लेकिन यह पर्याप्त तेज़ है :) – TigrouMeow

+0

एकमात्र अन्य विकल्प जो मुझे पता है ImageMagick है - मुझे लगता है कि आप EXIF ​​डेटा खोए बिना परिवर्तन कर सकते हैं लेकिन वह लाइब्रेरी अनिवार्य रूप से है वही काम करना जो आप पहले से कर रहे हैं, बस तेज है। –

2

मैं Magick नेट का इस्तेमाल किया और 2 विस्तार तरीकों बनाया:

public static byte[] ToByteArray(this Image imageIn) 
    { 
     MemoryStream ms = new MemoryStream(); 
     imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
     return ms.ToArray(); 
    } 

    public static Image AttachMetadData(this Image imgModified, Image imgOriginal) 
    { 
     using (MagickImage imgMeta = new MagickImage(imgOriginal.ToByteArray())) 
     using (MagickImage imgModi = new MagickImage(imgModified.ToByteArray())) 
     { 
      foreach (var profileName in imgMeta.ProfileNames) 
      { 
       imgModi.AddProfile(imgMeta.GetProfile(profileName)); 
      } 
      imgModified = imgModi.ToImage(); 
     } 
     return imgModified; 
    } 
संबंधित मुद्दे