Ho avuto un problema simile oggi, quando stavo cercando di ridimensionare un'immagine e poi ritagliare ciò che è successo è che ho usato questo codice per ridimensionare l'immagine.
private static Image resizeImage(Image imgToResize, Size size)
{
int sourceWidth = imgToResize.Width;
int sourceHeight = imgToResize.Height;
float nPercent = 0;
float nPercentW = 0;
float nPercentH = 0;
nPercentW = ((float)size.Width/(float)sourceWidth);
nPercentH = ((float)size.Height/(float)sourceHeight);
if (nPercentH < nPercentW)
nPercent = nPercentH;
else
nPercent = nPercentW;
int destWidth = (int)(sourceWidth * nPercent);
int destHeight = (int)(sourceHeight * nPercent);
Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
g.Dispose();
return (Image)b;
}
E poi questo codice per il raccolto ...
private static Image cropImage(Image img, Rectangle cropArea)
{
Bitmap bmpImage = new Bitmap(img);
Bitmap bmpCrop = bmpImage.Clone(cropArea,
bmpImage.PixelFormat);
return (Image)(bmpCrop);
}
Allora questo è il modo ho chiamato il codice di cui sopra ...
Image img = Image.FromFile(@"C:\Users\****\Pictures\image.jpg");
img = ImageHandler.ResizeImage(img, new Size(400, 300));
img = ImageHandler.CropImage(img, new Rectangle(0, 25, 400, 250));
long quality = 90;
ho continuato a ottenere gli errori sulla coltura parte, il resizer ha funzionato bene!
Si scopre che ciò che stava accadendo all'interno del resizer stava causando errori nella funzione di ritaglio. I calcoli ridimensionati stavano facendo diventare le dimensioni reali dell'immagine come 399 anziché 400 che ho passato.
Quindi, quando ho passato 400 come argomento per il ritaglio, si cercava di ritagliare un 399 px immagine ampia con un bmp di larghezza 400px e ha gettato l'errore di memoria insufficiente!
La maggior parte del codice di cui sopra è stato trovato sul http://www.switchonthecode.com/tutorials/csharp-tutorial-image-editing-saving-cropping-and-resizing
L'immagine che stai cercando di caricare è eccezionalmente grande? – RCIX
Tutte le immagini sono inferiori a ~ 700kb. – dooburt
Sei sicuro che il file in questione sia un file immagine valido? Ho anche incontrato esattamente la stessa situazione, ma il file non è stato in grado di caricare in nessun altro programma. –