社区
C#
帖子详情
求教C#中超大图片处理方案
minwen369
2010-03-23 10:43:05
各位,我有个需求,将N个小图片拼接成一个超大图片(GB级的),一时想不到什么好的解决方法,请大家帮帮忙!
...全文
1493
29
打赏
收藏
求教C#中超大图片处理方案
各位,我有个需求,将N个小图片拼接成一个超大图片(GB级的),一时想不到什么好的解决方法,请大家帮帮忙!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
b66173045
2010-09-02
打赏
举报
回复
有没有试过用GDAL
jiushi97
2010-08-09
打赏
举报
回复
Gdal如何计算有效数据的长和宽呢?
ygf2010cn
2010-06-03
打赏
举报
回复
学习下,一般在内存中处理图象可以处理多大的?
chenzt1015
2010-05-03
打赏
举报
回复
[Quote=引用 21 楼 minwen369 的回复:]
引用 18 楼 cdglynn 的回复:
4~5M的图片加载到内存就有500M以上(跟图像质量有关),何况3~4G的图片,想一次性显示基本不可能。除非是图片可以放大、缩小或可以拖动。实际上google map 也不会直接把很大的图片都加载到web上。我的建议:
图片以碎片(小图片)的形式保存,并事先计算好小图在大图中的坐标,在“大图”显示时先计算出显示区域的图像对应的图片碎片,然后调取碎片显示……
[/Quote]
需要gis不 联系 32768021
gaogaogoo
2010-04-11
打赏
举报
回复
学习一下
healer_kx
2010-03-23
打赏
举报
回复
[Quote=引用 11 楼 wuyq11 的回复:]
图片合并
private Bitmap MergerImg(Dictionary<string, Bitmap> bitMapDic)
{
Bitmap backgroudImg = new Bitmap(bitMapDic.Count * 12, 16);
Graphics g = Graphics.FromImage(backgroudImg);
g.Clear(System.……
[/Quote]
学习了。
wuyq11
2010-03-23
打赏
举报
回复
图片合并
private Bitmap MergerImg(Dictionary<string, Bitmap> bitMapDic)
{
Bitmap backgroudImg = new Bitmap(bitMapDic.Count * 12, 16);
Graphics g = Graphics.FromImage(backgroudImg);
g.Clear(System.Drawing.Color.White);
int j = 0;
foreach (KeyValuePair<string, Bitmap> entry in bitMapDic)
{
Bitmap map = entry.Value;
g.DrawImage(map, j * 11, 0, map.Width, map.Height);
j++;
}
g.Dispose();
return backgroudImg;
}
liyoubaidu
2010-03-23
打赏
举报
回复
我没叫你把整张大图也读到内存里去啊。
minwen369
2010-03-23
打赏
举报
回复
啊,在线等,等不到么。。。。
minwen369
2010-03-23
打赏
举报
回复
[Quote=引用 7 楼 liyoubaidu 的回复:]
根据图片的储存方式,把每张小图片的数据插入大图文件的某个位置。
[/Quote]
大图呢,放在哪?放内存里?这么大的容量。。。。。。
liyoubaidu
2010-03-23
打赏
举报
回复
根据图片的储存方式,把每张小图片的数据插入大图文件的某个位置。
minwen369
2010-03-23
打赏
举报
回复
[Quote=引用 5 楼 lcl_data 的回复:]
引用 2 楼 minwen369 的回复:
不用Picturebox显示的,在特殊场合有用,无缝连接倒是真的。。。。但是那么多小图,然后拼接成一个超大的图片,肯定是不能在内存里面操作的。。。。
先局部拍图,然后对该图的碎片进行排序,而后直接读取排序的图?
[/Quote]
这样是可以的,在图片量比较少的时候,将要拼接的图按顺序命名,然后直接读取附,附加到新的大图上去。
十八道胡同
2010-03-23
打赏
举报
回复
[Quote=引用 2 楼 minwen369 的回复:]
不用Picturebox显示的,在特殊场合有用,无缝连接倒是真的。。。。但是那么多小图,然后拼接成一个超大的图片,肯定是不能在内存里面操作的。。。。
[/Quote]
先局部拍图,然后对该图的碎片进行排序,而后直接读取排序的图?
minwen369
2010-03-23
打赏
举报
回复
[Quote=引用 3 楼 benbenhuo 的回复:]
定义一个序列,可以按照图片名称 如1.gif、2.gif...等
然后按照某种排列算法拼凑起来
[/Quote]
这个方法我实现了,但是最终是要形成一个图片啊,这张图片总大小可能到3、4G,这种方法操作的话效率低,计算机也应付不了啊。
benbenhuo
2010-03-23
打赏
举报
回复
定义一个序列,可以按照图片名称 如1.gif、2.gif...等
然后按照某种排列算法拼凑起来
minwen369
2010-03-23
打赏
举报
回复
[Quote=引用 1 楼 jelly_tracy 的回复:]
关注一下,拼成大图片 ??难道放到一个区域,利用picturebox??中间做到无缝连接?
[/Quote]
不用Picturebox显示的,在特殊场合有用,无缝连接倒是真的。。。。但是那么多小图,然后拼接成一个超大的图片,肯定是不能在内存里面操作的。。。。
Jelly_tracy
2010-03-23
打赏
举报
回复
关注一下,拼成大图片 ??难道放到一个区域,利用picturebox??中间做到无缝连接?
minwen369
2010-03-23
打赏
举报
回复
结贴了。。。。GDAL很强大。。。。
minwen369
2010-03-23
打赏
举报
回复
[Quote=引用 22 楼 xujiaoxiang 的回复:]
引用 17 楼 minwen369 的回复:
是这样的,我们把google map的地图瓦片全部下载下来了,准备
拼成一张大图
,然后按我们自己的投影系统和切图算法再切成小图。。。。。
拼成一张大图,不是真正的需求,是你们自己加进去的。而你们遇到的问题恰好出现在自己加的需求中。
那么变通一下。去掉拼成一张大图这个步骤,直接在google map的地图瓦片提取你们……
[/Quote]
。。。。。。。。,google map 小图我们已经有了,投影坐标不一样,没用,就比如google map 的中国地图是偏长,我们的优点类似压扁了。原有瓦片都没用的。
xujiaoxiang
2010-03-23
打赏
举报
回复
[Quote=引用 17 楼 minwen369 的回复:]
是这样的,我们把google map的地图瓦片全部下载下来了,准备
拼成一张大图
,然后按我们自己的投影系统和切图算法再切成小图。。。。。
[/Quote]
拼成一张大图,不是真正的需求,是你们自己加进去的。而你们遇到的问题恰好出现在自己加的需求中。
那么变通一下。去掉
拼成一张大图
这个步骤,直接在google map的地图瓦片提取你们需要的小图。
加载更多回复(9)
C#
图片
处理
示例(裁剪,缩放,清晰度,水印)
本文介绍
C#
中
图片
处理
的多种技巧,包括裁剪、缩放、提高清晰度及添加水印等功能,适用于项目
中
相册、头像等场景,通过代码实现
图片
的美化和标准化。
在麒麟系统
中
利用VSCODE与
C#
实现高效
图片
处理
方案
本文介绍在国产麒麟操作系统
中
,基于VS Code与.NET SDK构建
C#
图片
处理
开发环境的方法,重点集成SkiaSharp跨平台图形库实现字节流解码、图像编辑与高质量保存;涵盖环境搭建、SkiaSharp双包版本一致性配置、安全解码、格式自适应保存、大图性能优化及典型错误(如libSkiaSharp加载失败、色彩颠倒、透明背景变黑)的排查
方案
。
C#
图片
处理
的5个致命陷阱:你以为的“无损“,其实早被偷走了!
本文深入剖析
C#
图片
处理
中
的五个常见但致命的问题:JPEG有损压缩误解、PNG透明通道丢失、缩放算法不当、元数据遗漏及格式转换损失。每个问题均附真实案例与解决
方案
,帮助开发者规避画质下降、信息丢失等风险,提升图像
处理
质量与用户体验。
HTML
超大
图片
加载显示解决
方案
--
图片
切割转换成瓦片地图(BaiduMapTileCutter)
针对
超大
图片
(>100MB)加载需求,介绍BaiduMapTileCutter工具的使用及优化过程,将其从32位升级至64位,大幅提升
图片
处理
能力。
C#
111,131
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章