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;
}