在 Google App Engine 中使用 Java,如何根据 int r、g、b 值的数组制作 BMP 图像?
Using Java in Google App Engine, how do I make a BMP image from an array of arrays of int r, g, b values?
我所拥有的是:对于颜色 r、g 和 b 中的每一种,一个 [0,255] 范围内的二维整数数组。我想要的是:从这个数组中创建一个 BMP 并将其发送给客户端。问题是,我不能使用 java.awt.Color、BufferedImage 等,因为这些在 App Engine 中是禁止使用的。 App Engine 确实提供图像处理服务,但是,该服务适用于我已有的图像,而不是用于从头开始创建图像。
我正在考虑自学如何 'manually' 创建 BMP,但这看起来工作量很大。我应该这样做,还是有更简单的方法?
例如,与 JPG 或 PNG 相比,BMP format 非常简单。
它有很多 header 字段和位,但您不需要全部 calculate/fill。基本上你需要做的是 create/write BMP header 小于 100 字节(如果我没记错的话~56)。您只需要设置几个字段,例如以像素为单位的图像大小、图像类型(例如 bits/bytes 每像素)等。您可以使用与您的相同的图像类型:每像素 3 个字节(r、g 和 b 分量)。
一旦有了这个,图像数据就会跟着你写,要记住的一件事是 BMP 存储图像 upside-down,它可能有一个倍数的行填充例如 4 个字节。
就是这样!请注意,我没有提到 java.awt.Image
或 java.awt.Color
,因为创建简单的 BMP 不需要它们。
我考虑发布 "scope" 中的完整代码,因为你还没有发布任何代码。
这是一个示例 Java 实现,使用它或 modify/tweak 根据您的需要使用它:
http://www.javaworld.com/article/2077561/learn-java/java-tip-60--saving-bitmap-files-in-java.html
还有很多其他的Java实现,不要害怕搜索。
我所拥有的是:对于颜色 r、g 和 b 中的每一种,一个 [0,255] 范围内的二维整数数组。我想要的是:从这个数组中创建一个 BMP 并将其发送给客户端。问题是,我不能使用 java.awt.Color、BufferedImage 等,因为这些在 App Engine 中是禁止使用的。 App Engine 确实提供图像处理服务,但是,该服务适用于我已有的图像,而不是用于从头开始创建图像。
我正在考虑自学如何 'manually' 创建 BMP,但这看起来工作量很大。我应该这样做,还是有更简单的方法?
例如,与 JPG 或 PNG 相比,BMP format 非常简单。
它有很多 header 字段和位,但您不需要全部 calculate/fill。基本上你需要做的是 create/write BMP header 小于 100 字节(如果我没记错的话~56)。您只需要设置几个字段,例如以像素为单位的图像大小、图像类型(例如 bits/bytes 每像素)等。您可以使用与您的相同的图像类型:每像素 3 个字节(r、g 和 b 分量)。
一旦有了这个,图像数据就会跟着你写,要记住的一件事是 BMP 存储图像 upside-down,它可能有一个倍数的行填充例如 4 个字节。
就是这样!请注意,我没有提到 java.awt.Image
或 java.awt.Color
,因为创建简单的 BMP 不需要它们。
我考虑发布 "scope" 中的完整代码,因为你还没有发布任何代码。
这是一个示例 Java 实现,使用它或 modify/tweak 根据您的需要使用它:
http://www.javaworld.com/article/2077561/learn-java/java-tip-60--saving-bitmap-files-in-java.html
还有很多其他的Java实现,不要害怕搜索。