Так что я в настоящее время работаю над resizer, который работает/работал очень хорошо, но, за исключением того, что он дал мне OutOfMemoryException, когда я обрабатывал слишком много изображений сразу, сбой программы.Bitmap ArgumentException после возвращения в оператор using
Итак, чтобы исправить это, я обернул методы внутри оператора using, чтобы растровые изображения можно было правильно расположить.
Однако я заметил, что если я возвращаю мой Bitmap внутри с помощью заявления я получаю это «ArgumentException было необработанное» сообщение
Вот мой метод ImageResize:
public Bitmap ResizeImage(MemoryStream ms, Size size)
{
if (comboBox2.Text == "Pixel")
{
using (Bitmap img = new Bitmap(new Bitmap(ms, true), size.Width, size.Height))
{
var original = new Bitmap(ms, true);
Graphics graphic = Graphics.FromImage(img);
//IRRELEVANT CODE.....
return img;
}
}
else
{
return null;
}
А вот когда я пытаюсь сохранить мое изображение вне метода ImageResize:
private void button1_Click(object sender, EventArgs e)
{
//IRRELEVANT CODE ...
img = ResizeImage(memory, new Size(getX(), getY()));
//IRRELEVANT CODE ...
img.Save(outputFileName, codec, encoderParams); //<-Exception occurs here
}
Когда я удалить, используя оператор все отлично работает снова, однако я должен использовать ю используя блоки для размещения растрового изображения и для предотвращения утечки памяти. Также, когда я сохраняю изображение внутри оператора using, он отлично работает, но это не решение в моем случае.
Что я делаю неправильно? Мне кажется, что битмап не возвращается правильно.
Я признателен за любую помощь и заранее спасибо Ravand
Мне нравится комментарий '// IRRELEVANT CODE ...'. Он принадлежит [этой теме] (http://stackoverflow.com/q/184618/2596334). –
Hahaha опубликуйте его, если хотите: D, но, честно говоря, это не имеет значения в этом случае. – Ravand