简单的图片存取
通过bitmap的getpixel方法获取每个像素的rgb值 然后把它存入一个文件,然后再通过读取这个文件还原一个bitmap的例子,
。Net就是这么强大就是这么bt 也许你你不知道jpg的内部文件格式 也许你不知道bmp文件的内部格式(实际上也不是很复杂研究一下就OK啦 ˇ△ˇ)
但是你却可以借助.Net自带的GDI 图形库这个强大的东东作为桥梁在短时间来完成你想要的功能 ,你看哇哈哈 是不是发现你也会用C#编写图片处理工具了 (¯▽¯;) 编程就是这么的有趣。
啥加水印啊 啥调节某个区域的亮度啊 啥。。。。那些都自己整 只要有想法都可以实现
C#代码:
static void Main(string[] args) { //找一个640x480的图片 读取文件并把所有像素转存到文件a BinaryWriter sw; if (File.Exists("a")) File.Delete("a"); sw = new BinaryWriter(File.Create("a")); Bitmap img = new Bitmap("a.bmp"); for (int i = 0; i < img.Height; i++) { for (int j = 0; j < img.Width; j++) { Color cor = img.GetPixel(j, i); sw.Write(cor.R); sw.Write(cor.G); sw.Write(cor.B); } } sw.Close(); //从转存的文件中读取位图数据 并生成b.jpg BinaryReader br; br = new BinaryReader(new FileStream("a", FileMode.Open)); byte data; Bitmap img2 = new Bitmap(640, 480); for (int i = 0; i < img2.Height; i++) { for (int j = 0; j < img2.Width; j++) { byte r = br.ReadByte(); byte g = br.ReadByte(); byte b = br.ReadByte(); Color cor = Color.FromArgb(r, 0, b); img2.SetPixel(j, i, cor); } } br.Close(); img2.Save("b.jpg", ImageFormat.Jpeg); }
可以随意调整质量的jpg转储:
private void button1_Click(object sender, EventArgs e) { ImageCodecInfo ici; System.Drawing.Imaging.Encoder enc; EncoderParameter ep; EncoderParameters epa; // Initialize the necessary objects ici = GetEncoderInfo("image/jpeg"); enc = System.Drawing.Imaging.Encoder.Quality;//设置保存质量 epa = new EncoderParameters(1); // Set the compression level ep = new EncoderParameter(enc, 1L);//质量等级为25% epa.Param[0] = ep; // create a Bitmap object from a BMP file. System.Drawing.Image bmp = System.Drawing.Image.FromFile(@"11.jpg"); // Convert to JPEG and Save bmp.Save("111.jpg", ici, epa); } //将BMP图象转换为JPEG图象 private static ImageCodecInfo GetEncoderInfo(String mimeType) { int j; ImageCodecInfo[] encoders; encoders = ImageCodecInfo.GetImageEncoders(); for (j = 0; j < encoders.Length; ++j) if (encoders[j].MimeType == mimeType) return encoders[j]; return null; }