以前写了个给添加水印的工具
也可以用来转换格式
发现一次转换十多个图片时比较慢
但是同样的图片添加水印时却快得多
于是就对比测试了一个那个Bitmap得save方法图片保存在 bitmap
方法一:
bitmap.save(path,imageType);
直接使用save方法转换格式
方法二:
Graphics g = Graphics.FromImage(bitmap)
g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);
new_img.save(path,imageType);
使用DrawImage将图片写入到new_img后再保存用20个1024的jpg测试了一下
方法一:37.156秒
方法二:4.203秒用单个文件测试了一下
选用1600x1200的jpg,转换成bmp
测试5次取平均值
方法一:3028毫秒
方法二:424毫秒
巨大的差距啊...高达86%哪位高人能解释一下为什么会有那么大的差距吗?小弟刚接触C#不久,不要见笑啊。
也可以用来转换格式
发现一次转换十多个图片时比较慢
但是同样的图片添加水印时却快得多
于是就对比测试了一个那个Bitmap得save方法图片保存在 bitmap
方法一:
bitmap.save(path,imageType);
直接使用save方法转换格式
方法二:
Graphics g = Graphics.FromImage(bitmap)
g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);
new_img.save(path,imageType);
使用DrawImage将图片写入到new_img后再保存用20个1024的jpg测试了一下
方法一:37.156秒
方法二:4.203秒用单个文件测试了一下
选用1600x1200的jpg,转换成bmp
测试5次取平均值
方法一:3028毫秒
方法二:424毫秒
巨大的差距啊...高达86%哪位高人能解释一下为什么会有那么大的差距吗?小弟刚接触C#不久,不要见笑啊。
bitmap.save(path,imageType);
直接使用save方法转换格式
方法二:
Graphics g = Graphics.FromImage(bitmap)
g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);
new_img.save(path,imageType);方法一前面的代码是啥?
方法二中new_img是怎么构造的??
大家都帮忙看看吧
最好使用1600x1200及以上的图片,这样子差距明显
对于这个效率存有疑问,还请大侠释疑...
这里有编译好的程序: http://kitten.blog.pcicp.com/job.php?action=download&pid=&tid=12080&aid=10829
这个是工程文件: http://kitten.blog.pcicp.com/job.php?action=download&pid=&tid=12080&aid=10830
=================================================================================
private Bitmap m_bitmap;
private Bitmap bmpNew; /// <summary>
/// 打开图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void open_button_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Multiselect = false;
ofd.Filter = "所有图片格式|*.jpg;*.jpeg;*.bmp;*.tiff;*.tif;*.gif;*.png|JPEG 图片(*.jpg)|*.jpg;*.jpeg|BMP 图片(*.bmp)|*.bmp;*.BMP|TIFF 图片(*.tiff)|*.tiff;*.tif|GIF 图片(*.gif)|*.gif|PNG 图片(*.png)|*.png;*.PNG";
string filter = ofd.Filter;
ofd.InitialDirectory = System.Environment.CurrentDirectory;
ofd.Title = "打开图象文件"; if (ofd.ShowDialog() == DialogResult.OK)
{
try
{
m_bitmap = new Bitmap(ofd.FileName);
}
catch (Exception)
{
MessageBox.Show("图片文件格式非法!","错误");
}
} this.save_button.Enabled = true;
this.save_button_1.Enabled = true;
} /// <summary>
/// 保存图片(方法一)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void save_button_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "图象保存位置...";
sfd.OverwritePrompt = true;
sfd.CheckPathExists = true;
sfd.Filter = "BMP 图片(*.bmp)|*.bmp"; if (sfd.ShowDialog() == DialogResult.OK)
{
string strFileName = sfd.FileName; DateTime StartTime = DateTime.Now; //开始执行的时间 m_bitmap.Save(strFileName, ImageFormat.Bmp); DateTime EndTime = DateTime.Now; //完成执行的时间
TimeSpan ts = EndTime - StartTime;
MessageBox.Show("顺利完成转换! \n\n耗时: " + (ts.Seconds).ToString() + "." + ts.Milliseconds.ToString() + " 秒", "完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
} /// <summary>
/// 保存图片(方法二)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void save_button_1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "图象保存位置...";
sfd.OverwritePrompt = true;
sfd.CheckPathExists = true;
sfd.Filter = "BMP 图片(*.bmp)|*.bmp"; if (sfd.ShowDialog() == DialogResult.OK)
{
string strFileName = sfd.FileName; DateTime StartTime = DateTime.Now; //开始执行的时间 this.bmpNew = new Bitmap(m_bitmap.Width, m_bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
this._draw();
bmpNew.Save(strFileName, ImageFormat.Bmp); DateTime EndTime = DateTime.Now; //完成执行的时间
TimeSpan ts = EndTime - StartTime;
MessageBox.Show("顺利完成转换! \n\n耗时: " + (ts.Seconds).ToString() + "." + ts.Milliseconds.ToString() + " 秒", "完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
} public void _draw()
{
Graphics g = Graphics.FromImage(bmpNew);
g.Clear(Color.White);
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.High; g.DrawImage(m_bitmap, 0, 0, m_bitmap.Width, m_bitmap.Height);
g.Dispose();
}
====================================================================================