C#如何将500M的图片压缩

cszrydn 2011-10-21 05:12:48
在C#中价值几百兆的图片就会出现内存不足的问题,图片在图片查看器中没有问题,为什么在bitmap、picturebox中都会内存溢出。怎样才能用C#写一个加载并显示500M左右的图片呢?能压缩就更好了。谁能帮帮忙啊,不胜感激!
...全文
257 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxap 2011-10-21
  • 打赏
  • 举报
回复
写个循环 截取图片某个矩形,然后压缩在另一个大的矩形上画截取到的部分。直到截取完毕

主要利用://在指定位置画图
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:位置与长宽,根据自己需要设置!
Icedmilk 2011-10-21
  • 打赏
  • 举报
回复
在硬盘上的图片一般是经过压缩的,如果要显示出来,必须要转换为无压缩的位图,所以就算提前用photo提前处理也没用。

这个问题必须将图片分块,只加载需要显示的区域,其他部分都放在硬盘
宝_爸 2011-10-21
  • 打赏
  • 举报
回复
zzxap 2011-10-21
  • 打赏
  • 举报
回复
将文件分割 读取 压缩 合并
宝_爸 2011-10-21
  • 打赏
  • 举报
回复
好像是挺麻烦的

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
山东蓝鸟贵薪 2011-10-21
  • 打赏
  • 举报
回复
你想实现什么功能 
j_lei407 2011-10-21
  • 打赏
  • 举报
回复
为什么不换一个思路,把图片用photoshop压缩之后再进行加载呢……
kkbac 2011-10-21
  • 打赏
  • 举报
回复
帮顶.
内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,并强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务分配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习并实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,更强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。

111,132

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧