package org.herac.tuxguitar.gui.util; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.ImageLoader; import org.eclipse.swt.graphics.PaletteData; import org.eclipse.swt.graphics.RGB; public class ImageUtils { /** * Crea una mascara a partir de src. * * @param src * @param alpha * @param none * @return ImageData */ public static ImageData applyMask(ImageData src, RGB alpha, RGB none) { ImageData maskData = new ImageData(src.width, src.height, 1, new PaletteData(new RGB[] { none, alpha })); for (int x = 0; x < maskData.width; x++) { for (int y = 0; y < maskData.height; y++) { RGB rgb = src.palette.getRGB(src.getPixel(x, y)); if (rgb.red == alpha.red && rgb.green == alpha.green && rgb.blue == alpha.blue) { maskData.setPixel(x, y, maskData.palette.getPixel(none)); } else { maskData.setPixel(x, y, maskData.palette.getPixel(alpha)); } } } return maskData; } /** * Convierte un ImageData en un array de bytes * * @param data * @param format * @return */ public static byte[] imageToByteArray(ImageData data, int format) { ByteArrayOutputStream out = new ByteArrayOutputStream(); writeImage(data, out, format); return out.toByteArray(); } /** * Escribe el ImageData en el outputStream * * @param data * @param outputStream * @param format */ public static void writeImage(ImageData data, OutputStream outputStream, int format) { ImageLoader loader = new ImageLoader(); loader.data = new ImageData[] { data }; loader.save(outputStream, format); } }