检查图像文件大小(以字节为单位)

时间:2014-02-25 11:26:09

标签: c#

图像尺寸约为2.5MB

此代码为我提供了合适的尺寸:

var fileLength = new FileInfo(path).Length;

这段代码给了我大约600KB

Image image= Image.FromFile(path);
byte[] imageByte = imageToByteArray(image);
long legnth= imageByte.Length;

public static byte[] imageToByteArray(System.Drawing.Image imageIn)
{
    MemoryStream ms = new MemoryStream();
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    return ms.ToArray();
}

我缺少什么?

问题是我在byte []中重现图像所以..

3 个答案:

答案 0 :(得分:3)

var fileLength = new FileInfo(path).Length;

与此类似:

byte[] buffer = System.IO.File.ReadAllBytes(@"yourimage.ext");
int size = buffer.Length;

System.Drawing.Image对象保存原始未压缩位图。当您调用imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png)时,位图会使用不同的图像/压缩算法或相同的算法但不同的选项进行压缩,这就是图像大小不同的原因。

答案 1 :(得分:1)

此代码正常工作..

//your filePath  ex: /document/mypersonal/ram.png
var fileLength = new FileInfo (FilePath).Length;
public static string GetFileSize(fileLength)
{
    string[] sizes = { "B", "KB", "MB", "GB" };
    int order = 0;
    while (fileLength >= 1024 && order + 1 < sizes.Length) {
        order++;
        fileLength = fileLength/1024;
    }
    string result = String.Format("{0:0.##} {1}", fileLength, sizes[order]);
    return result;
}

答案 2 :(得分:0)

检查字节数组的Length是否正确,正如@Kuba Wyrostek所提到的,问题是您很可能将文件的格式从松散的未压缩位图更改为PNG和然后检查大小,这将返回不同的值。

您可以依赖的最值得信赖的价值是

var fileLength = new FileInfo(path).Length;