У любого человека может быть что-то не так? Я получаю «Параметр недействителен» в строке «imageData.Save», но я подозреваю, что параметр imageData var является более ранним, чем это, поскольку я вижу некоторые исключения аргументов внутри объекта imageData после его установки. Спасибо за любые предложения.Параметр недействителен для изображения. Сохранение
using (Image image = Image.FromFile(Server.MapPath("~/User_Data/asset.png")))
{
Image imageData = ResizeImage(image, 120, 120, image.Width, image.Height);
string base64String = this.ImageToBase64String(imageData, ImageFormat.Png);
<snip>
}
public string ImageToBase64String(Image imageData, ImageFormat format)
{
using (var stream = new MemoryStream())
{
imageData.Save(stream, format);
return Convert.ToBase64String(stream.ToArray());
}
}
public Image ResizeImage(Image image, int canvasWidth, int canvasHeight, int originalWidth, int originalHeight)
{
using (Image image2 = new Bitmap(canvasWidth, canvasHeight))
using (Graphics graphics = Graphics.FromImage(image2))
{
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.CompositingQuality = CompositingQuality.HighQuality;
double num = ((double)canvasWidth)/((double)originalWidth);
double num2 = ((double)canvasHeight)/((double)originalHeight);
double num3 = (num < num2) ? num : num2;
int height = Convert.ToInt32((double)(originalHeight * num3));
int width = Convert.ToInt32((double)(originalWidth * num3));
int x = Convert.ToInt32((double)((canvasWidth - (originalWidth * num3))/2.0));
int y = Convert.ToInt32((double)((canvasHeight - (originalHeight * num3))/2.0));
graphics.Clear(Color.White);
graphics.DrawImage(image, x, y, width, height);
ImageCodecInfo.GetImageEncoders();
using (var parameters = new EncoderParameters(1))
{
parameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L);
}
return image2;
}
}
Вот скриншот моего отладчика ... это останавливается сразу после ImageData получает установлены и прямо перед ImageToBase64String называется. Эти исключения в файле imageData не приводят к сбою приложения, но, разумеется, это выглядит неправильно?
Вы получаете эту ошибку во время выполнения или времени компиляции? Он выглядит как действительный звонок. –
Параметр Неверная ошибка происходит во время выполнения. (файл DOES существует) :) –
добавление скриншота отладчика, чтобы попытаться показать неудобство с помощью imageData –