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

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

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

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

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

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

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

1M等于多少字节

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

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

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

发表评论

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

 
返回顶部
ett