Sto lavorando con immagini di grandi dimensioni (ad esempio 16000x9440 px) e alcune aree vengono tagliate per altre cose. Sto diventando un'eccezione "Memoria insufficiente" quando si crea una nuova istanza Bitmap:Errore di memoria insufficiente durante il caricamento di una bitmap
using (FileStream fileStream = new FileStream(mapFileResized, FileMode.Open))
{
byte[] data = new byte[fileStream.Length];
fileStream.Read(data, 0, data.Length);
using (MemoryStream memoryStream = new MemoryStream(data))
{
using (Bitmap src = new Bitmap(memoryStream)) // <-- exception
{
tile = new Bitmap(tileWidth, tileHeight, PixelFormat.Format24bppRgb);
tile.SetResolution(src.HorizontalResolution, src.VerticalResolution);
tile.MakeTransparent();
using (Graphics grRect = Graphics.FromImage(tile))
{
grRect.CompositingQuality = CompositingQuality.HighQuality;
grRect.SmoothingMode = SmoothingMode.HighQuality;
grRect.DrawImage(
src,
new RectangleF(0, 0, tileWidth, tileHeight),
rTile,
GraphicsUnit.Pixel
);
}
}
}
}
Quando uso le piccole dimensioni delle immagini poi tutti bene il lavoro (ad es 8000x4720 px.).
Come posso lavorare con immagini di grandi dimensioni?
Tegola PS Bitmap è disposto nel blocco finally.
Cordiali saluti, Alex.
Ha lo stesso problema. –
Secondo la pagina di architettura (http://www.imagemagick.org/script/architecture.php#tera-pixel) ImageMagick può "leggere, elaborare o scrivere immagini di mega-, giga- o tera-pixel". Non ho provato questo però. –