-
Anonymous
Инициализатор типа для «Gdip» выдал исключение, когда я запускаю свой код на сервере
Сообщение
Anonymous »
Код: Выделить всё
public async Task Handle(UploadImageRequest request, CancellationToken cancellationToken)
{
try
{
if (request.Files == null || request.Files.Count == 0)
{
throw new Exception("No files uploaded.");
}
if (request.Watermark == null)
{
throw new Exception("Watermark image is missing.");
}
var uploadedImagePaths = new List();
float opacity = ParseOpacity(request.Opacity);
using (var watermarkStream = new MemoryStream())
{
await request.Watermark.CopyToAsync(watermarkStream);
using (var watermarkImage = Image.FromStream(watermarkStream))
{
foreach (var file in request.Files)
{
string name = null;
try
{
name = Path.GetFileName(file.FileName);
}
catch
{
throw new Exception("Name");
}
if (name != null)
{
bool gdiPlusInstalled = GdiPlusCheck.IsGdiPlusInstalled();
if (gdiPlusInstalled)
{
}
else
{
}
using (var stream = new MemoryStream())
{
await file.CopyToAsync(stream);
using (var uploadedImage = Image.FromStream(stream))
using (var mergedImage = new Bitmap(uploadedImage.Width, uploadedImage.Height))
using (var graphic = Graphics.FromImage(mergedImage))
{
graphic.DrawImage(uploadedImage, 0, 0);
graphic.CompositingMode = CompositingMode.SourceOver;
var watermarkAttributes = new ImageAttributes();
watermarkAttributes.SetColorMatrix(new ColorMatrix { Matrix33 = opacity });
var watermarkWidth = (int)(uploadedImage.Width * 0.25);
var watermarkHeight = (int)(watermarkImage.Height * ((float)watermarkWidth / watermarkImage.Width));
var x = request.WaterMarkPosition switch
{
WaterMarkPosition.TopLeft => 0,
WaterMarkPosition.TopRight => uploadedImage.Width - watermarkWidth,
WaterMarkPosition.BottomLeft => 0,
WaterMarkPosition.BottomRight => uploadedImage.Width - watermarkWidth,
WaterMarkPosition.LeftMiddle => 0,
WaterMarkPosition.RightMiddle => uploadedImage.Width - watermarkWidth,
_ => (uploadedImage.Width - watermarkWidth) / 2,
};
var y = request.WaterMarkPosition switch
{
WaterMarkPosition.TopLeft => 0,
WaterMarkPosition.TopRight => 0,
WaterMarkPosition.BottomLeft => uploadedImage.Height - watermarkHeight,
WaterMarkPosition.BottomRight => uploadedImage.Height - watermarkHeight,
WaterMarkPosition.TopMiddle => 0,
WaterMarkPosition.BottomMiddle => uploadedImage.Height - watermarkHeight,
_ => (uploadedImage.Height - watermarkHeight) / 2,
};
graphic.DrawImage(watermarkImage, new Rectangle(x, y, watermarkWidth, watermarkHeight), 0, 0, watermarkImage.Width, watermarkImage.Height, GraphicsUnit.Pixel, watermarkAttributes);
using (var ms = new MemoryStream())
{
mergedImage.Save(ms, ImageFormat.Png);
var imageData = ms.ToArray();
try
{
var imageUrl = await _blobStorageService.UploadFileAsync(name, imageData);
uploadedImagePaths.Add(imageUrl);
}
catch
{
throw new Exception("Strorage");
}
}
}
}
}
}
}
}
return new Response(uploadedImagePaths);
}
}
При запуске на сервере я получаю это исключение. Я не понимаю, как устранить эту ошибку.
Подробнее здесь:
https://stackoverflow.com/questions/784 ... de-in-serv
1721696172
Anonymous
[code]public async Task Handle(UploadImageRequest request, CancellationToken cancellationToken)
{
try
{
if (request.Files == null || request.Files.Count == 0)
{
throw new Exception("No files uploaded.");
}
if (request.Watermark == null)
{
throw new Exception("Watermark image is missing.");
}
var uploadedImagePaths = new List();
float opacity = ParseOpacity(request.Opacity);
using (var watermarkStream = new MemoryStream())
{
await request.Watermark.CopyToAsync(watermarkStream);
using (var watermarkImage = Image.FromStream(watermarkStream))
{
foreach (var file in request.Files)
{
string name = null;
try
{
name = Path.GetFileName(file.FileName);
}
catch
{
throw new Exception("Name");
}
if (name != null)
{
bool gdiPlusInstalled = GdiPlusCheck.IsGdiPlusInstalled();
if (gdiPlusInstalled)
{
}
else
{
}
using (var stream = new MemoryStream())
{
await file.CopyToAsync(stream);
using (var uploadedImage = Image.FromStream(stream))
using (var mergedImage = new Bitmap(uploadedImage.Width, uploadedImage.Height))
using (var graphic = Graphics.FromImage(mergedImage))
{
graphic.DrawImage(uploadedImage, 0, 0);
graphic.CompositingMode = CompositingMode.SourceOver;
var watermarkAttributes = new ImageAttributes();
watermarkAttributes.SetColorMatrix(new ColorMatrix { Matrix33 = opacity });
var watermarkWidth = (int)(uploadedImage.Width * 0.25);
var watermarkHeight = (int)(watermarkImage.Height * ((float)watermarkWidth / watermarkImage.Width));
var x = request.WaterMarkPosition switch
{
WaterMarkPosition.TopLeft => 0,
WaterMarkPosition.TopRight => uploadedImage.Width - watermarkWidth,
WaterMarkPosition.BottomLeft => 0,
WaterMarkPosition.BottomRight => uploadedImage.Width - watermarkWidth,
WaterMarkPosition.LeftMiddle => 0,
WaterMarkPosition.RightMiddle => uploadedImage.Width - watermarkWidth,
_ => (uploadedImage.Width - watermarkWidth) / 2,
};
var y = request.WaterMarkPosition switch
{
WaterMarkPosition.TopLeft => 0,
WaterMarkPosition.TopRight => 0,
WaterMarkPosition.BottomLeft => uploadedImage.Height - watermarkHeight,
WaterMarkPosition.BottomRight => uploadedImage.Height - watermarkHeight,
WaterMarkPosition.TopMiddle => 0,
WaterMarkPosition.BottomMiddle => uploadedImage.Height - watermarkHeight,
_ => (uploadedImage.Height - watermarkHeight) / 2,
};
graphic.DrawImage(watermarkImage, new Rectangle(x, y, watermarkWidth, watermarkHeight), 0, 0, watermarkImage.Width, watermarkImage.Height, GraphicsUnit.Pixel, watermarkAttributes);
using (var ms = new MemoryStream())
{
mergedImage.Save(ms, ImageFormat.Png);
var imageData = ms.ToArray();
try
{
var imageUrl = await _blobStorageService.UploadFileAsync(name, imageData);
uploadedImagePaths.Add(imageUrl);
}
catch
{
throw new Exception("Strorage");
}
}
}
}
}
}
}
}
return new Response(uploadedImagePaths);
}
}
[/code]
При запуске на сервере я получаю это исключение. Я не понимаю, как устранить эту ошибку.
Подробнее здесь: [url]https://stackoverflow.com/questions/78476610/the-type-initializer-for-gdip-threw-an-exception-when-i-am-run-my-code-in-serv[/url]