如何使用 iText7 在 C# 中从 MemoryStream 创建 Image 对象?
How do you create an Image object from a MemoryStream in C# using iText7?
我正在 ASP.NET-MVC v5.2 中使用 iText7。我对 iText 非常缺乏经验,而 C# 仍在尝试弄清楚这个库中的 类 是如何工作的。
假设我有一个 MemoryStream
,其中包含一个图像...
MemoryStream imgStream = new MemoryStream(imgLocation);
如何使用 imgStream
创建图像对象?我正在寻找符合
的东西
Image img = new Image(imgStream);
感谢您的帮助:)
编辑:我正在尝试从 iText 创建图像而不是 System.Drawing.Image
将 MemoryStream 转换为 byte[]
并使用 GetInstance
方法
public static byte[] GetByteArray(Stream input)
{
byte[] buffer = new byte[16*1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
然后像这样使用字节数组
var Image = Image.GetInstance(GetByteArray(imgStream));
要从位图图像创建 iText 7 Image
对象,您首先必须创建一个 ImageData
实例,然后您可以将其输入相应的 Image
构造函数之一
public Image(ImageData img);
public Image(ImageData img, float left, float bottom);
public Image(ImageData img, float left, float bottom, float width);
您通常使用相应的 ImageDataFactory
静态方法创建一个 ImageData
实例:
public static ImageData Create(byte[] bytes);
public static ImageData Create(String filename);
public static ImageData Create(Uri url);
如您所见,流没有方法。但由于您的流是 MemoryStream
,您可以轻松检索图像的 byte[]
。因此,
byte[] imageBytes = imgStream.ToArray();
ImageData rawImage = ImageDataFactory.Create(imageBytes);
Image image = new Image(rawImage);
我正在 ASP.NET-MVC v5.2 中使用 iText7。我对 iText 非常缺乏经验,而 C# 仍在尝试弄清楚这个库中的 类 是如何工作的。
假设我有一个 MemoryStream
,其中包含一个图像...
MemoryStream imgStream = new MemoryStream(imgLocation);
如何使用 imgStream
创建图像对象?我正在寻找符合
Image img = new Image(imgStream);
感谢您的帮助:)
编辑:我正在尝试从 iText 创建图像而不是 System.Drawing.Image
将 MemoryStream 转换为 byte[]
并使用 GetInstance
方法
public static byte[] GetByteArray(Stream input)
{
byte[] buffer = new byte[16*1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
然后像这样使用字节数组
var Image = Image.GetInstance(GetByteArray(imgStream));
要从位图图像创建 iText 7 Image
对象,您首先必须创建一个 ImageData
实例,然后您可以将其输入相应的 Image
构造函数之一
public Image(ImageData img);
public Image(ImageData img, float left, float bottom);
public Image(ImageData img, float left, float bottom, float width);
您通常使用相应的 ImageDataFactory
静态方法创建一个 ImageData
实例:
public static ImageData Create(byte[] bytes);
public static ImageData Create(String filename);
public static ImageData Create(Uri url);
如您所见,流没有方法。但由于您的流是 MemoryStream
,您可以轻松检索图像的 byte[]
。因此,
byte[] imageBytes = imgStream.ToArray();
ImageData rawImage = ImageDataFactory.Create(imageBytes);
Image image = new Image(rawImage);