Sam*_*tte 3 .net system.drawing image-manipulation image-processing
我有一个奇怪的问题 - 我有大约1450万个位图图像,据说是未压缩的.我需要将这些位图转换为JPG并将它们存储在数据库中.
当我使用.NET System.Drawing库中提供的类将位图保存为ImageFormat.Jpeg时,生成的JPEG 大小是原始位图大小的两倍.这是代码:
byte[] bitmapBytes = //get from the db
using(MemoryStream bitmapStream = new MemoryStream(bitmapBytes))
{
using(Bitmap bitmap = (Bitmap)Bitmap.FromStream(bitmapStream))
{
bitmap.Save("jpg.jpg", ImageFormat.Jpeg);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经查看了其中几个图像的HEX,看起来压缩设置是"无".所以我假设他们没有压缩.此外,原始文件的HEX具有"BMP"代码,结果文件具有您期望的"JFIF"代码.
图像是黑白的,没有颜色.
有关为什么会发生这种情况的任何想法?寻找正确方向的指针......
编辑:
图像属性:
黑白还是灰度?
来自http://www.faqs.org/faqs/compression-faq/part2/section-6.html:
"JPEG适用于全彩色或灰度图像;它不能处理双层(黑白)图像,至少不能很好.它也不处理彩色图像;你必须将它们预先扩展为未映射的图像全彩色表示.JPEG在"连续色调"图像上表现最佳.颜色值突然跳跃的图像不能很好地压缩."
| 归档时间: |
|
| 查看次数: |
3580 次 |
| 最近记录: |