[英]Out of Memory exception while loading image to BitMap
我正在開發應用程序,它將編輯圖像。 但是當我嘗試從光盤加載圖像時,它會因為system.outofmemoryexception
而崩潰。 我的 RAM 非常空,但我觀察到的是,當 memory 在 memory 中達到 30MB 時,該應用程序崩潰了。 所以也許我需要分配更多的 memory? 這是調用異常的代碼:
using(Bitmap DocasnyObrazek = (Bitmap)Bitmap.FromFile(otevreniSouboru.FileName)) {...}
這是打開加載圖像的完整代碼:
namespace Editor_Obrázků_2._0
{
public partial class Form1 : Form
{
Bitmap Obrazek;//datová složka pro obrázek
Color[,] Barvy; //datová složka pro barvy
private void OtevriSoubor() //otevření souboru
{
OpenFileDialog otevreniSouboru = new OpenFileDialog();//deklarace metody
otevreniSouboru.Filter = "Obrázky (*.bmp, *.jpg|*.bmp; *.jpg";//povolené přípony souboru
otevreniSouboru.ShowDialog();//zobrazí okno pro vybrání souboru
if (otevreniSouboru.FileName != "") //jestli existuje soubor tak otevřít
{
using(Bitmap DocasnyObrazek = (Bitmap)Bitmap.FromFile(otevreniSouboru.FileName))//using se stará o pamět, Obrázek bude přetypován na Bitmap
{
if (DocasnyObrazek.Width <= 500 && DocasnyObrazek.Height <= 500) //pokud je menší než 500x500
{
if (Obrazek != null)
{
Obrazek.Dispose();
Obrazek = null;
}
Obrazek = (Bitmap)DocasnyObrazek.Clone();//přetypování a nahrání dat "clone" neodkazuje na data ale předává je
Barvy = new Color[Obrazek.Width, Obrazek.Height]; //pole pro barvy
for (int sloupec = 0; sloupec < Obrazek.Width; sloupec++)//nahrání barev
for (int radek = 0; radek < Obrazek.Height; radek++)
{
Barvy[sloupec, radek] = Obrazek.GetPixel(sloupec, radek);
}
this.seznamEfektů.Enabled = true;
}
else//obrázek je příliš velký nelze načíst
{
MessageBox.Show("Obrázek je příliš velký", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
public Form1()
{
InitializeComponent();
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
OtevriSoubor();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
if (Obrazek != null)
{
e.Graphics.DrawImage(Obrazek, 10, 10);
}
}
}
}
我發現,為什么這不起作用。 在文檔中,內存不足異常是指 jpg 或 bmp 文件的問題,而不是outofmemoryexception
的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.