在服务器应用程序中使用Magick.Net时,我遇到了CPU /内存使用方面的问题。单个请求本身会增加使用量,并且随着越来越多的用户与包含多个页面的文件结合使用,它可能会使服务器停止运行。我想知道我的代码中是否缺少某些东西,是否有一种优化的方法,还是只需要限制资源。
此过程从另一个源中提取字节数组的集合,每个字节数组代表一个页面。然后将它们组合成一个文件,以字节数组形式返回。
private static readonly MagickReadSettings _settings = new MagickReadSettings
{
Density = new Density(300),
UseMonochrome = true,
Compression = CompressionMethod.Group4,
};
public static byte[] CreatePdfFromImageFiles(List<ImageFile> imageFiles)
{
using (MagickImageCollection col = new MagickImageCollection())
{
for (int i = 0; i < imageFiles.Count; i++)
{
byte[] data = imageFiles[i].Bytes;
MagickImage mi = new MagickImage(data, _settings)
{
Format = MagickFormat.Pdf
};
if (imageFiles[i].Rotation != 0)
mi.Rotate(Convert.ToDouble(imageFiles[i].Rotation));
col.Add(mi);
}
return col.ToByteArray();
}
}