2009-01-15 12 views
8

मेरे पास कुछ कोड है जो उपयोगकर्ताओं को अपलोड करने वाली छवियों को स्केल करता है। यह ज्यादातर स्थितियों में पूरी तरह से काम करता है, लेकिन कभी-कभी वे जेपीईजी अपलोड करते हैं जिसमें सीएमके जानकारी होती है।कैसे पता लगाया जा सकता है कि एक जेपीईजी में cmyk रंग प्रोफाइल है?

थोड़ा googling के बाद, यह सीएमवाइके मूल्यों के साथ jpegs की तरह लगता है मान्य नहीं है, लेकिन जब से वे खिड़कियों में काम करते हैं, उन मान यह अपने आवेदन के साथ एक समस्या है, तो मैं उन स्थितियों को संभालने में सक्षम होने की जरूरत है। सवाल:

कैसे (यह मेरे लिए उपयोगकर्ता को सूचित करने के लिए कारण है कि यह काम नहीं करता है की अनुमति होगी) मैं पता लगाने jpeg सीएमवाईके में जानकारी शामिल है या नहीं?।

मैं इसे सामान्य जेपीईजी में कैसे परिवर्तित कर सकता हूं?

उत्तर

3

जेपीईजी एक मानक है जो बिटस्ट्रीम के अंदर किसी भी एन्कोडेड विमानों (वे स्वतंत्र रूप से संपीड़ित होते हैं) का समर्थन करते हैं, इसलिए एक सीएमके प्रोफाइल वाला एक जेपीजी पूरी तरह से मान्य है। अधिकांश जेपीईजी फाइलों को एक जेएफआईफ़ कंटेनर (http://en.wikipedia.org/wiki/JFIF) का उपयोग करके एन्कोड किया जाता है, जो मूल रूप से केवल ग्रेस्केल छवियों, वाईसीबीसीआर, या एसआरबीबी का समर्थन करता है, लेकिन यह एक्स्टेंसिबल है और एडोब के पास सीएमके प्रोफाइल का समर्थन करने के लिए एक कस्टम टैग है।

वर्कअराउंड http://www.jroller.com/greenhorn/entry/adobe_photoshop_and_jpeg_cmyk के लिए इस लिंक पर एक नज़र डालें, यह जावा में है लेकिन आप इसे आसानी से सी # पर बंद कर सकते हैं।

+0

सीएमवाईके पूरी तरह से मान्य हो सकता है, हालांकि कभी-कभी आईई छवि को ठीक से नहीं दिखाता है। – davethegr8

+2

मैं यह देखने में असफल रहा कि यह प्रश्न से कैसे संबंधित है, लेकिन ऐसा लगता है कि यह आईई का मुद्दा/सीमा है। – Ismael

+0

खैर, फ़ायरफ़ॉक्स 3 छवियों को प्रदर्शित करता है, लेकिन "गलत" रंगों के साथ। आईई 6 बस लाल एक्स के साथ बॉक्स देता है। आप तय करते हैं कि कौन सा बेहतर है। –

3

ASP.NET में अगर एक JPG System.Drawing.Imaging.ImageFlags गणन की मदद से सीएमवाइके प्रोफ़ाइल का उपयोग सहेजा जाता है आप निर्धारित कर सकते,

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.imageflags(VS.80).aspx

मान लीजिए कि आप एक बुनियादी aspx करते हैं पेज जहां एक उपयोगकर्ता एक फ़ाइल अपलोड करके आपको बताने के लिए की जरूरत है,

1) यह एक jpg है? 2) क्या यह आरजीबी का उपयोग कर रहा है?

आपका aspx की तर्ज पर हो सकता है,

<form id="form1" runat="server" enctype="multipart/form-data"> 
<asp:FileUpload ID="myUpload" runat="server" /> 
<asp:Button ID="submitButton" runat="server" Text="Submit" OnClick="Click_submitButton" />  
<br /><br />  
<asp:Literal ID="feedback" runat="server" /> 
</form> 

और फिर पीछे अपने कोड (सी #) के लिए आप कर सकते हैं,

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Click_submitButton(object sender, EventArgs e) 
    { 
     if (myUpload.HasFile && isUploadAJpeg(myUpload.PostedFile)) 
     { 
      System.Drawing.Bitmap uploadedImage = new System.Drawing.Bitmap(myUpload.PostedFile.InputStream); 
      if (isFileACMYKJpeg(uploadedImage)) 
      { 
       feedback.Text = "The file is a CYMK jpg"; 
      } 
      else 
      { 
       feedback.Text = "This is a RGB jpg"; 
       //it is a rgb jpg --> do something with it 
      } 
     } 
     else 
     { 
      feedback.Text = "You did not upload a jpg"; 
     } 
    } 

    protected bool isUploadAJpeg(HttpPostedFile someFile) 
    { 
     if (someFile.ContentType == "image/jpg" || someFile.ContentType == "image/jpeg" || someFile.ContentType == "image/pjpeg") 
     { 
      return true; 
     } 
     return false; 
    } 

    protected bool isFileACMYKJpeg(System.Drawing.Image someImage) 
    { 
     System.Drawing.Imaging.ImageFlags flagValues = (System.Drawing.Imaging.ImageFlags)Enum.Parse(typeof(System.Drawing.Imaging.ImageFlags), someImage.Flags.ToString()); 
     if (flagValues.ToString().ToLower().IndexOf("ycck") == -1) 
     { 
      return false; 
     } 
     return true; 
    } 
} 

आशा है कि मदद करता है!

+0

यह नेट के बाद से काम नहीं करता है अभी भी bugged है (4.0 पर परीक्षण): यह, सीएमवाईके तस्वीरें के लिए रंग प्रोफ़ाइल आरजीबी से पता चलता भी ycck पर जाँच करने के लिए सही झंडा नहीं है। सही दिशा में हमें आगे बढ़ने के लिए धन्यवाद ;-) –

संबंधित मुद्दे