2015-06-18 179 views
1

請參閱下面的代碼。我正在保存一張圖片。我的輸入圖像顏色模式是CMYK,但是一旦我保存了,它就變成了RGB,然後休息。我只想做以下事情:C#圖像保存爲CMYK

  1. 我只想保持它到CMYK顏色模式。
  2. 我只想保持相同的輸入質量。
  3. 我只是想保持輸入相同的寬度和高度。

    Bitmap bmp = new Bitmap(Image.FromFile(@"D:\input.jpg"));    
        Graphics gr = Graphics.FromImage(bmp); 
    
        using (Font myFont = new Font("Arial", 42)) 
        { 
         gr.DrawString("Hello!", myFont, Brushes.Green, new Point(2, 2)); 
         gr.DrawString(textBox1.Text, myFont, Brushes.Green, new Point(700, 750)); 
        } 
        ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg); 
        System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; 
        EncoderParameters myEncoderParameters = new EncoderParameters(1); 
    
        EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L); 
        myEncoderParameters.Param[0] = myEncoderParameter; 
        bmp.Save(@"D:\test.jpg", jgpEncoder, myEncoderParameters); 
    
+0

http://stackoverflow.com/questions/2426432/convert-rgb-color-to-cmyk可能有幫助 – AgentFire

回答

2

圖像轉換爲位圖,這樣就可以操縱它

Bitmap bmp = new Bitmap(Image.FromFile(@"D:\input.jpg")); 

內部是否轉換的行爲(在Bitmap顏色調色板是RGB)。在保存到您的文件之前,您必須使用轉換算法(ArgentFire建議的鏈接中的一個或其他內容)。

在回答您的評論:

  1. 不會發生。要執行所需圖像的操作,您必須使用位圖,該位圖會在內部進行轉換。 (在.Net中,位圖是圖像的標準內存中表示)

  2. 當您重新編碼位圖以進行保存時,圖像質量將由jpg編碼器確定。 Jpeg使用有損壓縮,因此保持原始圖像質量值得懷疑。

  3. 我沒有看到你在做什麼,應該改變圖像的縱橫比。

你可能會更好使用像tiff這樣的無損圖像格式。從tiff開始,轉換爲位圖操作,編碼回tiff保存。在圖像質量方面全部無損。

+0

感謝凱文,請參考更新的問題,請提供您的支持。 – Safa