C#实现图片放大功能的按照像素放大图像方法
程序员文章站
2023-12-18 15:59:10
本文实例讲述了基于visual c#实现的图片放大功能代码。可以直接放大像素,类似photoshop的图片放大功能,可用于像素的定位及修改,由于使用了指针需要勾选允许不安全...
本文实例讲述了基于visual c#实现的图片放大功能代码。可以直接放大像素,类似photoshop的图片放大功能,可用于像素的定位及修改,由于使用了指针需要勾选允许不安全代码选项,读者可将其用于自己的项目中!
关于几个参数说明:
srcbitmap源图片
multiple图像放大倍数
放大处理后的图片
注意:需要在头部引用:using system.drawing;using system.drawing.imaging;
至于命名空间读者可以自己定义。
主要功能代码如下:
using system.drawing;using system.drawing.imaging; public bitmap magnifier(bitmap srcbitmap, int multiple) { if (multiple <= 0) { multiple = 0; return srcbitmap; } bitmap bitmap = new bitmap(srcbitmap.size.width * multiple, srcbitmap.size.height * multiple); bitmapdata srcbitmapdata = srcbitmap.lockbits(new rectangle(new point(0, 0), srcbitmap.size), imagelockmode.readonly, pixelformat.format32bppargb); bitmapdata bitmapdata = bitmap.lockbits(new rectangle(new point(0, 0), bitmap.size), imagelockmode.readwrite, pixelformat.format32bppargb); unsafe { byte* srcbyte = (byte*)(srcbitmapdata.scan0.topointer()); byte* sourcebyte = (byte*)(bitmapdata.scan0.topointer()); for (int y = 0; y < bitmapdata.height; y++) { for (int x = 0; x < bitmapdata.width; x++) { long index = (x / multiple) * 4 + (y / multiple) * srcbitmapdata.stride; sourcebyte[0] = srcbyte[index]; sourcebyte[1] = srcbyte[index + 1]; sourcebyte[2] = srcbyte[index + 2]; sourcebyte[3] = srcbyte[index + 3]; sourcebyte += 4; } } } srcbitmap.unlockbits(srcbitmapdata); bitmap.unlockbits(bitmapdata); return bitmap; }