C#如何将500M的图片压缩
在C#中价值几百兆的图片就会出现内存不足的问题,图片在图片查看器中没有问题,为什么在bitmap、picturebox中都会内存溢出。怎样才能用C#写一个加载并显示500M左右的图片呢?能压缩就更好了。谁能帮帮忙啊,不胜感激! --------------------编程问答-------------------- 帮顶. --------------------编程问答-------------------- 为什么不换一个思路,把图片用photoshop压缩之后再进行加载呢…… --------------------编程问答-------------------- 你想实现什么功能--------------------编程问答-------------------- 好像是挺麻烦的
We have a quite huge (~50MB) raster image in our map control.
The solution was to cut the main image into small pieces and load into a Image[,] array.
-------------------------------------
| pic00 | pic01 | | |
-------------------------------------
| pic10 | | | |
pic.png -> -------------------------------------
| | | | |
-------------------------------------
| | | | picnm |
-------------------------------------
You are able to draw this pieces with Graphics.DrawImage(..).
There is only big issue: if you need the whole picture on the screen, the drawing procedure can be slow. A good workaround to save a thumbnail and show that if needed.
来自
http://stackoverflow.com/questions/779395/how-to-handle-big-images-with-c-sharp
--------------------编程问答-------------------- 将文件分割 读取 压缩 合并 --------------------编程问答-------------------- 有人说这个库可以处理大图片。
http://www.aforgenet.com/framework/
信息来自:
http://stackoverflow.com/questions/2612544/large-image-in-net --------------------编程问答-------------------- 在硬盘上的图片一般是经过压缩的,如果要显示出来,必须要转换为无压缩的位图,所以就算提前用photo提前处理也没用。
这个问题必须将图片分块,只加载需要显示的区域,其他部分都放在硬盘
--------------------编程问答-------------------- 写个循环 截取图片某个矩形,然后压缩在另一个大的矩形上画截取到的部分。直到截取完毕
主要利用://在指定位置画图
g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
new System.Drawing.Rectangle(0, 0, image.Width, image.Height),
System.Drawing.GraphicsUnit.Pixel);
image:你的原图,
System.Drawing.Rectangle:位置与长宽,根据自己需要设置!
补充:.NET技术 , C#