您的位置:首页 > 编程语言 > C#

C#将wbmp格式图片转为jpg的图片

2011-10-25 18:29 429 查看
C#将wbmp格式图片转为jpg的图片。给个能直接用的方法加100分。具体代码如下:

添加引用

using System.IO;

using System.Drawing.Drawing2D;

using System.Drawing.Imaging;

添加一个openFileDialog1,一个saveFileDialog1和一个pictureBox1,执行函数后显示图像并保存

private void openWBmp()

{

this.openFileDialog1.Filter = "Wbmp Files(*.wbmp)|*.wbmp";

if (this.openFileDialog1.ShowDialog()== DialogResult.OK)

{

byte[] datas = File.ReadAllBytes(this.openFileDialog1.FileName);

byte tmp;

int width=0, height=0,offset=2;

do

{

tmp = datas[offset++];

width = (width << 7) | (tmp & 0x7f);

} while ((tmp & 0x80) != 0);

do

{

tmp = datas[offset++];

height = (height << 7) | (tmp & 0x7f);

} while ((tmp & 0x80) != 0);

Bitmap bmp = new Bitmap(width, height, PixelFormat.Format8bppIndexed);

BitmapData bd = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, bmp.PixelFormat);

int stride=(width+7)>>3;

byte[] tmpdata = new byte[height * width];

for (int i = 0; i < height;i++ )

{

int pos = stride*i;

byte mask = 0x80;

for (int j = 0; j < width;j++ )

{

if ((datas[offset + pos] & mask )== 0)

tmpdata[i*width+j] = 0;

else

tmpdata[i*width+j] = 0xff;

mask >>= 1;

if (mask == 0)

{

mask = 0x80;

pos++;

}

}

}

System.Runtime.InteropServices.Marshal.Copy(tmpdata, 0, bd.Scan0, tmpdata.Length);

bmp.UnlockBits(bd);

this.pictureBox1.Image = bmp;

this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

if (this.saveFileDialog1.ShowDialog()== DialogResult.OK)

{

bmp.Save(this.saveFileDialog1.FileName);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: