.NET提供了许多类和函数来操作包括PNG在内的图像。像Image, Bitmap, etc. classes一样。假设,我不想使用这些类。
如果我想手动读取/写入PNG图像作为二进制文件以处理像素,那我该怎么办呢?
private void Form1_Load(object sender, EventArgs e)
{
{
this.BackColor = System.Drawing.Color.LightCyan;
button1.Hide();
if (comboBox1 = 1);
button1.Show();
}
}
如何掌握单个像素来操纵它们?
答案 0 :(得分:1)
最简单的方法是使用ReadAllBytes
和WriteAllBytes
功能:
byte[] imageBytes = File.ReadAllBytes("D:\\yourImagePath.jpg"); // Read
File.WriteAllBytes("D:\\yourImagePath.jpg", imageBytes); // Write
答案 1 :(得分:0)
将Image转换为byte []数组:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
将byte []数组转换为Image:
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
如果你想在这里使用像素,那么:
Bitmap bmp = (Bitmap)Image.FromFile(filename);
Bitmap newBitmap = new Bitmap(bmp.Width, bmp.Height);
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
var pixel = bmp.GetPixel(i, j);
newBitmap.SetPixel(i, j, Color.Red);
}
}