最近有一个需求,需要将图片转为base64编码后上传到服务器,同时转换成base64编码后的大小要小于4M。注意是转换成base64编码后的大小而不是图像文件原来的大小,这就无法用FileInfo类来获取大小。

既然要判断base64编码后的大小,那我们就要先对图片进行base64编码,先将图片载入pictureBox1控件中,然后使用以下代码把图片转成base64编码的形式。

//将图片转Base64编码
try
{
  System.IO.MemoryStream m = new System.IO.MemoryStream();
    System.Drawing.Bitmap bp = new System.Drawing.Bitmap(path);
    bp.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);
    byte[] b = new byte[m.Length];
    m.Position = 0;
    m.Read(b, 0, (int)m.Length);
    m.Close();
    string base64 = Convert.ToBase64String(b);
}
catch (Exception ex) 
{ 
  MessageBox.Show(ex.Message); 
}

这个时候变量base64内储存的就是base64编码后的文本,我们要判断大小只要判断下这段文本所占的字节就行。

double size = base64.Length;// 获取文本所占字节大小

这样变量size内储存的就是变量base64内文本所占的大小,单位是字节,但这样不好读,我们再把单位转为M。

我们知道1兆字节=1048576字节,不知道的同学可以上网百度一下。

1M等于多少字节

那么现在就是数学问题了,直接将字节数除1048576就知道是多少M了,然后判断一下是否小于4就行了。

if (size / 1048576 < 4)
{
   //执行的语句
}else{
   MessageBox.Show("图片太大了");
}

本文版权归一天天世界所有,转载请注明出处并添加本文链接。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

 
返回顶部
ett