图像尺寸约为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 []中重现图像所以..
答案 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;