# How to convert a color image into sepia image in C# using Visual Studio

C# Project

Share

In this project we are learning to convert a color image into sepia image using C#

### Requirement

For this project we will need Microsoft Visual Studio

### Introduction

To convert a color image into sepia image we have to perform the following 3 steps for each pixel.

1. Get the RGB value of the pixel.
2. Calculate tr, tg and tb using the formula

tr = 0.393R + 0.769G + 0.189B
tg = 0.349R + 0.686G + 0.168B
tb = 0.272R + 0.534G + 0.131B

Take the integer value.

3. Set the new RGB value of the pixel as per the following condition:

If tr > 255 then r = 255 else r = tr
If tg > 255 then g = 255 else g = tg
If tb > 255 then b = 255 else b = tb

Example:

Consider a color pixel with the following values

A = 255

R = 100

G = 150

B = 200

Where A, R, G and B represents the Alpha, Red, Green and Blue value of the pixel.

Remember! ARGB will have an integer value in the range 0 to 255.

So, to convert the color pixel into sepia pixel we have to first calculate tr, tg and tb.

tr = 0.393(100) + 0.769(150) + 0.189(200)

tr = 192.45

tr = 192 (taking integer value)

Similarly,

tg = 0.349(100) + 0.686(150) + 0.168(200) = 171 (taking integer value)

and tb = 0.272(100) + 0.534(150) + 0.131(200) = 133 (taking integer value)

Now we will replace the value of R, G and B with the new value that we calculated for the pixel.

So, the new pixel value will be

A = 255

R = 192

G = 171

B = 133

Note! We don't have to change the alpha value because it only controls the transparency of the pixel.

### Form1.cs

``````
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Sepia
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap("D:\\Image\\zeenat.jpg");

pictureBox1.Image = Image.FromFile("D:\\Image\\zeenat.jpg");

//get image dimension
int width = bmp.Width;
int height = bmp.Height;

//color of pixel
Color p;

//sepia
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
//get pixel value
p = bmp.GetPixel(x, y);

//extract pixel component ARGB
int a = p.A;
int r = p.R;
int g = p.G;
int b = p.B;

//calculate temp value
int tr = (int)(0.393 * r + 0.769 * g + 0.189 * b);
int tg = (int)(0.349 * r + 0.686 * g + 0.168 * b);
int tb = (int)(0.272 * r + 0.534 * g + 0.131 * b);

//set new RGB value
if (tr > 255)
{
r = 255;
}
else
{
r = tr;
}

if (tg > 255)
{
g = 255;
}
else
{
g = tg;
}

if (tb > 255)
{
b = 255;
}
else
{
b = tb;
}

//set the new RGB value in image pixel
bmp.SetPixel(x, y, Color.FromArgb(a, r, g, b));
}
}

pictureBox2.Image = bmp;

//save (write) sepia image
bmp.Save("D:\\Image\\Sepia.png");
}
}
}
``````

### Form1.Designer.cs

``````
namespace Sepia
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows Form Designer generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Location = new System.Drawing.Point(12, 12);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(328, 368);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// pictureBox2
//
this.pictureBox2.Location = new System.Drawing.Point(363, 12);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(328, 368);
this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox2.TabIndex = 1;
this.pictureBox2.TabStop = false;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.Location = new System.Drawing.Point(112, 383);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(75, 24);
this.label1.TabIndex = 2;
this.label1.Text = "Original";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.Location = new System.Drawing.Point(499, 383);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(58, 24);
this.label2.TabIndex = 3;
this.label2.Text = "Sepia";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(703, 414);
this.Name = "Form1";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Sepia";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();

}

#endregion

private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
}
}
``````
Share