C#实现图片放大功能的按照像素放大图像方法
本文实例讲述了基于VisualC#实现的图片放大功能代码。可以直接放大像素,类似photoshop的图片放大功能,可用于像素的定位及修改,由于使用了指针需要勾选允许不安全代码选项,读者可将其用于自己的项目中!
关于几个参数说明:
srcbitmap源图片
multiple图像放大倍数
放大处理后的图片
注意:需要在头部引用:usingSystem.Drawing;usingSystem.Drawing.Imaging;
至于命名空间读者可以自己定义。
主要功能代码如下:
usingSystem.Drawing;usingSystem.Drawing.Imaging; publicBitmapMagnifier(Bitmapsrcbitmap,intmultiple) { if(multiple<=0){multiple=0;returnsrcbitmap;} Bitmapbitmap=newBitmap(srcbitmap.Size.Width*multiple,srcbitmap.Size.Height*multiple); BitmapDatasrcbitmapdata=srcbitmap.LockBits(newRectangle(newPoint(0,0),srcbitmap.Size),ImageLockMode.ReadOnly,PixelFormat.Format32bppArgb); BitmapDatabitmapdata=bitmap.LockBits(newRectangle(newPoint(0,0),bitmap.Size),ImageLockMode.ReadWrite,PixelFormat.Format32bppArgb); unsafe { byte*srcbyte=(byte*)(srcbitmapdata.Scan0.ToPointer()); byte*sourcebyte=(byte*)(bitmapdata.Scan0.ToPointer()); for(inty=0;y<bitmapdata.Height;y++) { for(intx=0;x<bitmapdata.Width;x++) { longindex=(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); returnbitmap; }