/** * Copyright 2009 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS-IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import("blob"); jimport("java.awt.image.BufferedImage"); jimport("org.apache.sanselan.Sanselan"); jimport("org.apache.sanselan.ImageFormat"); if (java.lang.System.getProperty("java.awt.headless") == null) { // If the system property isn't set either way, then default to "headless" mode, // so that we don't start calling the window manager when the AWT classes // are loaded. For example, on OS X the java process is given a Dock icon // when we create our first BufferedImage. java.lang.System.setProperty("java.awt.headless", "true"); } /** * Encodes the given pixel data into an image blob, ready to be served to * the client. Pixels are specified as 32-bit ints in the format AARRGGBB, * and the order is across rows first, then down columns. If useTransparency * is true, then all pixels should have an alpha channel as their * most-significant byte, with 0xff being fully opaque. If useTransparency * is false, all pixels are fully opaque and the high byte is ignored. * Supported formats: GIF. *
* For example, to create a GIF image consisting of a green pixel followed
* by a transparent pixel to the right of it, use:
* imageBlobFromPixels(2, 1, [0xff00ff00, 0x00000000], true, "gif")
*/
function pixelsToImageBlob(width, height, pixelArrayARGB, useTransparency, format) {
var image = _makeBufferedImage(width, height);
var array = _makePixelArray(width, height);
var alphaMask = (useTransparency ? 0x00000000 : 0xff000000);
for(var i=0; i