使用 System.Drawing.Bitmap 创建 google.cloud.vision.v1.image

4

我目前正在使用以下代码从本地文件创建一个google.cloud.vision.v1.image

var image = Image.FromFile(path);

为了节省带宽和处理时间,在将图像发送进行处理之前,我需要调整此图像的大小。我可以调整一个System.Drawing.Bitmap,但是我该如何从此Bitmap创建google.cloud.vision.v1.image?
有人能否指向该类的文档?

@John Skeet,请帮我解决这个问题... - techno
Google.Cloud.Vision.V1.Image.FromStream()有什么问题吗? - haim770
@haim770 我可以直接从 System.Drawing.Bitmap 创建它吗? - techno
1个回答

3
值得注意的是,你正在使用Google.Cloud.Vision.V1.ImageFromFile()方法,而不是.NET的System.Drawing.Image

Google的Image类只是一个包装器,允许您调用他们的服务。它不包含调整大小的方法或类似的方法。

因此,您需要调整本地图像的大小,然后将其写入所需格式的流中,然后从流构造Google的Image类。

代码如下:

System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(path);
System.Drawing.Image resizedImage = ResizeImage(sourceImage, width: 800, height: 600);
System.IO.Stream imageStream = resizedImage.ToStream(ImageFormat.Jpeg);
Google.Cloud.Vision.V1.Image resizedImageToUpload = Google.Cloud.Vision.V1.FromStream(imageStream);

当然,在这里或那里你需要使用 using() { ... } 或者 Dispose()


谢谢...所以除了创建一个流之外,没有其他方法吗? - techno
当然,你可以使用 FileStream 将其写入磁盘。 - CodeCaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接