不使用 system.drawing.image 加载图像
Load image without using system.drawing.image
我想加载图像流,以便可以使用 PDFsharp 将其转换为 pdf。
以下代码在我的 test/console-application 中有效,但在我的项目 运行 ASP.NET Framework 4.6.1 中无效。这是因为我正在使用 System.Drawing.Image.
Classes within the System.Drawing.Imaging namespace are not supported for use within a Windows or ASP.NET service. Attempting to use these classes from within one of these application types may produce unexpected problems, such as diminished service performance and run-time exceptions.
来源:Microsoft
我们如何解决这个问题?我的偏好是让一切都在记忆中。
我在控制台应用程序中的工作代码:
PdfDocument pdfDoc = new PdfDocument();
pdfDoc.Pages.Add(new PdfPage());
MemoryStream MemStream = new MemoryStream(inputStream); // Inputstream as byte[]
Image imgSource = Image.FromStream(MemStream); // This will fail
XImage imgX = XImage.FromGdiPlusImage(imgSource);
XGraphics xgr = XGraphics.FromPdfPage(pdfDoc.Pages[0]);
xgr.DrawImage(imgX, 0, 0);
MemoryStream outputStream = new MemoryStream();
pdfDoc.Save(outputStream, false);
byte[] dataConverted = outputStream.ToArray();
pdfDoc.Close();
return dataConverted;
只需将流传递给 PDFsharp:
public static XImage FromStream(Stream stream)
对于 PDFsharp 1.50,此方法是 public。我认为它不是 public 版本 1.3x。
使用 PDFsharp 的 WPF 构建 - GDI 构建在内部使用 Image.FromStream
。
我想加载图像流,以便可以使用 PDFsharp 将其转换为 pdf。
以下代码在我的 test/console-application 中有效,但在我的项目 运行 ASP.NET Framework 4.6.1 中无效。这是因为我正在使用 System.Drawing.Image.
Classes within the System.Drawing.Imaging namespace are not supported for use within a Windows or ASP.NET service. Attempting to use these classes from within one of these application types may produce unexpected problems, such as diminished service performance and run-time exceptions.
来源:Microsoft
我们如何解决这个问题?我的偏好是让一切都在记忆中。
我在控制台应用程序中的工作代码:
PdfDocument pdfDoc = new PdfDocument();
pdfDoc.Pages.Add(new PdfPage());
MemoryStream MemStream = new MemoryStream(inputStream); // Inputstream as byte[]
Image imgSource = Image.FromStream(MemStream); // This will fail
XImage imgX = XImage.FromGdiPlusImage(imgSource);
XGraphics xgr = XGraphics.FromPdfPage(pdfDoc.Pages[0]);
xgr.DrawImage(imgX, 0, 0);
MemoryStream outputStream = new MemoryStream();
pdfDoc.Save(outputStream, false);
byte[] dataConverted = outputStream.ToArray();
pdfDoc.Close();
return dataConverted;
只需将流传递给 PDFsharp:
public static XImage FromStream(Stream stream)
对于 PDFsharp 1.50,此方法是 public。我认为它不是 public 版本 1.3x。
使用 PDFsharp 的 WPF 构建 - GDI 构建在内部使用 Image.FromStream
。