gpt4 book ai didi

c# - 如何在没有内存问题的情况下加载/操作大图像?

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:01 25 4
gpt4 key购买 nike

尝试将巨大的图像(例如 9000x9000 像素图像)加载到 Bitmap 对象中会导致内存不足错误,即 "Parameter is not valid" error ,毫无疑问还有其他相关问题。

如何从磁盘加载 9000x9000 像素的图像,最终在保存回磁盘之前调整它的大小,而不会导致 fatal error (例如内存不足)?

让我们假设一个 32 位环境,有 2gb 内存,C# 4.0,并且将使用 jpg、gif、bmp、tif、png 格式的图像。

我尝试了以下 3 个片段,但都因内存错误而失败。

尝试 1:

using (Bitmap srcImg = new Bitmap(@"C:\9000x9000.jpg"))
{
// boom
}

尝试 2:

using (Image srcImg = Image.FromFile(@"C:\9000x9000.jpg"))
{
// kapow
}

尝试 3:

using (FileStream fs = new FileStream(@"C:\9000x9000.jpg", FileMode.Open, FileAccess.Read))
{
using (Image srcImg = Image.FromStream(fs))
{
// kelly clarkson
}
}

我对一个可能的解决方案的想法是将图像文件直接加载到一个数组中(这样你就没有 Bitmap 对象的巨大开销),以某种方式使用该数组将它的大小调整得更小(可能需要为不同的图像编码格式标题?),然后最终转换为可管理大小的位图对象。

想法或可能的解决方案?

最佳答案

看看 AForge.Net library ,即 supposedly good在处理大文件时。

关于c# - 如何在没有内存问题的情况下加载/操作大图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13444526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com