java.awt.image.BufferedImage#TYPE_4BYTE_ABGR_PRE()源码实例Demo

下面列出了java.awt.image.BufferedImage#TYPE_4BYTE_ABGR_PRE() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: openjdk-8-source   文件: ITXtTest.java
private static BufferedImage createBufferedImage() {
    BufferedImage image = new BufferedImage(128, 128,
                  BufferedImage.TYPE_4BYTE_ABGR_PRE);
    Graphics2D graph = image.createGraphics();
    graph.setPaintMode();
    graph.setColor(Color.orange);
    graph.fillRect(32, 32, 64, 64);
    graph.dispose();
    return image;
}
 
源代码2 项目: dragonwell8_jdk   文件: ITXtTest.java
private static BufferedImage createBufferedImage() {
    BufferedImage image = new BufferedImage(128, 128,
                  BufferedImage.TYPE_4BYTE_ABGR_PRE);
    Graphics2D graph = image.createGraphics();
    graph.setPaintMode();
    graph.setColor(Color.orange);
    graph.fillRect(32, 32, 64, 64);
    graph.dispose();
    return image;
}
 
源代码3 项目: openjdk-8   文件: ColConvTest.java
static String getImageTypeName(int type) {
    switch(type) {
        case BufferedImage.TYPE_INT_ARGB:
            return "TYPE_INT_ARGB";
        case BufferedImage.TYPE_INT_RGB:
            return "TYPE_INT_RGB";
        case BufferedImage.TYPE_INT_BGR:
            return "TYPE_INT_BGR";
        case BufferedImage.TYPE_INT_ARGB_PRE:
            return "TYPE_INT_ARGB_PRE";
        case BufferedImage.TYPE_3BYTE_BGR:
            return "TYPE_3BYTE_BGR";
        case BufferedImage.TYPE_4BYTE_ABGR:
            return "TYPE_4BYTE_ABGR";
        case BufferedImage.TYPE_4BYTE_ABGR_PRE:
            return "TYPE_4BYTE_ABGR_PRE";
        case BufferedImage.TYPE_BYTE_BINARY:
            return "TYPE_BYTE_BINARY";
        case BufferedImage.TYPE_BYTE_GRAY:
            return "TYPE_BYTE_GRAY";
        case BufferedImage.TYPE_BYTE_INDEXED:
            return "TYPE_BYTE_INDEXED";
        case BufferedImage.TYPE_USHORT_555_RGB:
            return "TYPE_USHORT_555_RGB";
        case BufferedImage.TYPE_USHORT_565_RGB:
            return "TYPE_USHORT_565_RGB";
        case BufferedImage.TYPE_USHORT_GRAY:
            return "TYPE_USHORT_GRAY";
    }
    return "UNKNOWN";
}
 
源代码4 项目: jdk8u_jdk   文件: ITXtTest.java
private static BufferedImage createBufferedImage() {
    BufferedImage image = new BufferedImage(128, 128,
                  BufferedImage.TYPE_4BYTE_ABGR_PRE);
    Graphics2D graph = image.createGraphics();
    graph.setPaintMode();
    graph.setColor(Color.orange);
    graph.fillRect(32, 32, 64, 64);
    graph.dispose();
    return image;
}
 
源代码5 项目: jdk8u-jdk   文件: ITXtTest.java
private static BufferedImage createBufferedImage() {
    BufferedImage image = new BufferedImage(128, 128,
                  BufferedImage.TYPE_4BYTE_ABGR_PRE);
    Graphics2D graph = image.createGraphics();
    graph.setPaintMode();
    graph.setColor(Color.orange);
    graph.fillRect(32, 32, 64, 64);
    graph.dispose();
    return image;
}
 
源代码6 项目: hottub   文件: ITXtTest.java
private static BufferedImage createBufferedImage() {
    BufferedImage image = new BufferedImage(128, 128,
                  BufferedImage.TYPE_4BYTE_ABGR_PRE);
    Graphics2D graph = image.createGraphics();
    graph.setPaintMode();
    graph.setColor(Color.orange);
    graph.fillRect(32, 32, 64, 64);
    graph.dispose();
    return image;
}
 
源代码7 项目: MyBox   文件: ImageValue.java
public static String imageType(int type) {
    switch (type) {
        case BufferedImage.TYPE_3BYTE_BGR:
            return "3BYTE_BGR";
        case BufferedImage.TYPE_4BYTE_ABGR:
            return "4BYTE_ABGR";
        case BufferedImage.TYPE_4BYTE_ABGR_PRE:
            return "4BYTE_ABGR_PRE";
        case BufferedImage.TYPE_BYTE_BINARY:
            return "BYTE_BINARY";
        case BufferedImage.TYPE_BYTE_GRAY:
            return "BYTE_GRAY";
        case BufferedImage.TYPE_BYTE_INDEXED:
            return "BYTE_INDEXED";
        case BufferedImage.TYPE_CUSTOM:
            return "CUSTOM";
        case BufferedImage.TYPE_INT_ARGB:
            return "INT_ARGB";
        case BufferedImage.TYPE_INT_ARGB_PRE:
            return "INT_ARGB_PRE";
        case BufferedImage.TYPE_INT_BGR:
            return "INT_BGR";
        case BufferedImage.TYPE_INT_RGB:
            return "INT_RGB";
        case BufferedImage.TYPE_USHORT_555_RGB:
            return "USHORT_555_RGB";
        case BufferedImage.TYPE_USHORT_565_RGB:
            return "USHORT_565_RGB";
    }
    return type + "";
}
 
源代码8 项目: openjdk-jdk8u   文件: ColConvTest.java
static String getImageTypeName(int type) {
    switch(type) {
        case BufferedImage.TYPE_INT_ARGB:
            return "TYPE_INT_ARGB";
        case BufferedImage.TYPE_INT_RGB:
            return "TYPE_INT_RGB";
        case BufferedImage.TYPE_INT_BGR:
            return "TYPE_INT_BGR";
        case BufferedImage.TYPE_INT_ARGB_PRE:
            return "TYPE_INT_ARGB_PRE";
        case BufferedImage.TYPE_3BYTE_BGR:
            return "TYPE_3BYTE_BGR";
        case BufferedImage.TYPE_4BYTE_ABGR:
            return "TYPE_4BYTE_ABGR";
        case BufferedImage.TYPE_4BYTE_ABGR_PRE:
            return "TYPE_4BYTE_ABGR_PRE";
        case BufferedImage.TYPE_BYTE_BINARY:
            return "TYPE_BYTE_BINARY";
        case BufferedImage.TYPE_BYTE_GRAY:
            return "TYPE_BYTE_GRAY";
        case BufferedImage.TYPE_BYTE_INDEXED:
            return "TYPE_BYTE_INDEXED";
        case BufferedImage.TYPE_USHORT_555_RGB:
            return "TYPE_USHORT_555_RGB";
        case BufferedImage.TYPE_USHORT_565_RGB:
            return "TYPE_USHORT_565_RGB";
        case BufferedImage.TYPE_USHORT_GRAY:
            return "TYPE_USHORT_GRAY";
    }
    return "UNKNOWN";
}
 
/**
 * Returns a <code>GenericImageSinglePassIterator</code> that is either a
 * <code>IntPixelIterator</code> or a <code>BytePixelIterator</code>.
 * 
 * @param image
 *            the image to iterate over.
 * @param iteratorType
 *            one of these 8 BufferedImage types: TYPE_INT_ARGB,
 *            TYPE_INT_ARGB_PRE, TYPE_INT_RGB, TYPE_INT_BGR, TYPE_3BYTE_BGR,
 *            TYPE_BYTE_GRAY, TYPE_4BYTE_ABGR, TYPE_4BYTE_ABGR_PRE.
 * @return a <code>GenericImageSinglePassIterator</code> for the image
 *         provided.
 */
public static GenericImageSinglePassIterator get(Image image,
		int iteratorType) {
	if (!(iteratorType == BufferedImage.TYPE_INT_ARGB
			|| iteratorType == BufferedImage.TYPE_INT_ARGB_PRE
			|| iteratorType == BufferedImage.TYPE_INT_RGB
			|| iteratorType == BufferedImage.TYPE_INT_BGR
			|| iteratorType == BufferedImage.TYPE_3BYTE_BGR
			|| iteratorType == BufferedImage.TYPE_BYTE_GRAY
			|| iteratorType == BufferedImage.TYPE_4BYTE_ABGR || iteratorType == BufferedImage.TYPE_4BYTE_ABGR_PRE)) {
		throw new IllegalArgumentException("illegal iterator type: "
				+ iteratorType);
	}
	final ImageProducer producer = image.getSource();
	final Consumer consumer = new Consumer(producer, iteratorType);
	// ImageProducer.startProduction often starts its own thread, but it's
	// not
	// required to. Sometimes in my testing a BufferedImage would make
	// this a blocking call. So to be safe this call should be in its
	// own thread:
	Thread productionThread = new Thread(
			"GenericImageSinglePassIterator: Production Thread") {
		@Override
		public void run() {
			producer.startProduction(consumer);
		}
	};
	productionThread.start();
	return consumer.getPixelIterator();
}
 
源代码10 项目: pumpernickel   文件: ScalingIterator.java
/**
 * Checks the incoming image type against the 4 byte types this class
 * supports.
 */
protected static boolean isSupportedByteType(int type) {
	return (type == BufferedImage.TYPE_3BYTE_BGR
			|| type == BufferedImage.TYPE_4BYTE_ABGR
			|| type == BufferedImage.TYPE_4BYTE_ABGR_PRE
			|| type == PixelIterator.TYPE_3BYTE_RGB
			|| type == PixelIterator.TYPE_4BYTE_ARGB
			|| type == PixelIterator.TYPE_4BYTE_ARGB_PRE || type == BufferedImage.TYPE_BYTE_GRAY);
}
 
源代码11 项目: openjdk-8   文件: ITXtTest.java
private static BufferedImage createBufferedImage() {
    BufferedImage image = new BufferedImage(128, 128,
                  BufferedImage.TYPE_4BYTE_ABGR_PRE);
    Graphics2D graph = image.createGraphics();
    graph.setPaintMode();
    graph.setColor(Color.orange);
    graph.fillRect(32, 32, 64, 64);
    graph.dispose();
    return image;
}
 
public int getPixelSize() {
	switch (type) {
	case BufferedImage.TYPE_4BYTE_ABGR:
	case BufferedImage.TYPE_4BYTE_ABGR_PRE:
	case PixelIterator.TYPE_4BYTE_ARGB:
	case PixelIterator.TYPE_4BYTE_ARGB_PRE:
		return 4;
	case PixelIterator.TYPE_3BYTE_RGB:
	case BufferedImage.TYPE_3BYTE_BGR:
		return 3;
	case BufferedImage.TYPE_BYTE_GRAY:
		return 1;
	}
	throw new RuntimeException("unexpected iterator type: " + type);
}
 
源代码13 项目: openjdk-jdk9   文件: ColConvTest.java
static String getImageTypeName(int type) {
    switch(type) {
        case BufferedImage.TYPE_INT_ARGB:
            return "TYPE_INT_ARGB";
        case BufferedImage.TYPE_INT_RGB:
            return "TYPE_INT_RGB";
        case BufferedImage.TYPE_INT_BGR:
            return "TYPE_INT_BGR";
        case BufferedImage.TYPE_INT_ARGB_PRE:
            return "TYPE_INT_ARGB_PRE";
        case BufferedImage.TYPE_3BYTE_BGR:
            return "TYPE_3BYTE_BGR";
        case BufferedImage.TYPE_4BYTE_ABGR:
            return "TYPE_4BYTE_ABGR";
        case BufferedImage.TYPE_4BYTE_ABGR_PRE:
            return "TYPE_4BYTE_ABGR_PRE";
        case BufferedImage.TYPE_BYTE_BINARY:
            return "TYPE_BYTE_BINARY";
        case BufferedImage.TYPE_BYTE_GRAY:
            return "TYPE_BYTE_GRAY";
        case BufferedImage.TYPE_BYTE_INDEXED:
            return "TYPE_BYTE_INDEXED";
        case BufferedImage.TYPE_USHORT_555_RGB:
            return "TYPE_USHORT_555_RGB";
        case BufferedImage.TYPE_USHORT_565_RGB:
            return "TYPE_USHORT_565_RGB";
        case BufferedImage.TYPE_USHORT_GRAY:
            return "TYPE_USHORT_GRAY";
    }
    return "UNKNOWN";
}
 
源代码14 项目: jdk8u-jdk   文件: ColConvTest.java
static String getImageTypeName(int type) {
    switch(type) {
        case BufferedImage.TYPE_INT_ARGB:
            return "TYPE_INT_ARGB";
        case BufferedImage.TYPE_INT_RGB:
            return "TYPE_INT_RGB";
        case BufferedImage.TYPE_INT_BGR:
            return "TYPE_INT_BGR";
        case BufferedImage.TYPE_INT_ARGB_PRE:
            return "TYPE_INT_ARGB_PRE";
        case BufferedImage.TYPE_3BYTE_BGR:
            return "TYPE_3BYTE_BGR";
        case BufferedImage.TYPE_4BYTE_ABGR:
            return "TYPE_4BYTE_ABGR";
        case BufferedImage.TYPE_4BYTE_ABGR_PRE:
            return "TYPE_4BYTE_ABGR_PRE";
        case BufferedImage.TYPE_BYTE_BINARY:
            return "TYPE_BYTE_BINARY";
        case BufferedImage.TYPE_BYTE_GRAY:
            return "TYPE_BYTE_GRAY";
        case BufferedImage.TYPE_BYTE_INDEXED:
            return "TYPE_BYTE_INDEXED";
        case BufferedImage.TYPE_USHORT_555_RGB:
            return "TYPE_USHORT_555_RGB";
        case BufferedImage.TYPE_USHORT_565_RGB:
            return "TYPE_USHORT_565_RGB";
        case BufferedImage.TYPE_USHORT_GRAY:
            return "TYPE_USHORT_GRAY";
    }
    return "UNKNOWN";
}
 
源代码15 项目: BigDataPlatform   文件: QCodeService.java
/**
 * 将商品图片,商品名字画到模版图中
 *
 * @param qrCodeImg  二维码图片
 * @param goodPicUrl 商品图片地址
 * @param goodName   商品名称
 * @return
 * @throws IOException
 */
private byte[] drawPicture(InputStream qrCodeImg, String goodPicUrl, String goodName) throws IOException {
    //底图
    ClassPathResource redResource = new ClassPathResource("back.png");
    BufferedImage red = ImageIO.read(redResource.getInputStream());


    //商品图片
    URL goodPic = new URL(goodPicUrl);
    BufferedImage goodImage = ImageIO.read(goodPic);

    //小程序二维码
    BufferedImage qrCodeImage = ImageIO.read(qrCodeImg);

    // --- 画图 ---

    //底层空白 bufferedImage
    BufferedImage baseImage = new BufferedImage(red.getWidth(), red.getHeight(), BufferedImage.TYPE_4BYTE_ABGR_PRE);

    //画上图片
    drawImgInImg(baseImage, red, 0, 0, red.getWidth(), red.getHeight());

    //画上商品图片
    drawImgInImg(baseImage, goodImage, 71, 69, 660, 660);

    //画上小程序二维码
    drawImgInImg(baseImage, qrCodeImage, 448, 767, 300, 300);

    //写上商品名称
    drawTextInImg(baseImage, goodName, 65, 867);

    //写上商城名称
    //        drawTextInImgCenter(baseImage, shopName, 98);


    //转jpg
    BufferedImage result = new BufferedImage(baseImage.getWidth(), baseImage
            .getHeight(), BufferedImage.TYPE_3BYTE_BGR);
    result.getGraphics().drawImage(baseImage, 0, 0, null);
    ByteArrayOutputStream bs = new ByteArrayOutputStream();
    ImageIO.write(result, "jpg", bs);

    //最终byte数组
    return bs.toByteArray();
}
 
源代码16 项目: dts-shop   文件: QCodeService.java
/**
 * 将商品图片,商品名字画到模版图中
 *
 * @param qrCodeImg
 *            二维码图片
 * @param goodPicUrl
 *            商品图片地址
 * @param goodName
 *            商品名称
 * @return
 * @throws IOException
 */
private byte[] drawPicture(InputStream qrCodeImg, String goodPicUrl, String goodName,BigDecimal counterPrice,BigDecimal retailPrice) throws IOException {
	// 底图
	ClassPathResource redResource = new ClassPathResource("back.png");
	BufferedImage red = ImageIO.read(redResource.getInputStream());

	// 商品图片
	URL goodPic = new URL(goodPicUrl);
	BufferedImage goodImage = ImageIO.read(goodPic);

	// 小程序二维码
	BufferedImage qrCodeImage = ImageIO.read(qrCodeImg);

	// --- 画图 ---

	// 底层空白 bufferedImage
	BufferedImage baseImage = new BufferedImage(red.getWidth(), red.getHeight(), BufferedImage.TYPE_4BYTE_ABGR_PRE);

	// 画上图片
	drawImgInImg(baseImage, red, 0, 0, red.getWidth(), red.getHeight());

	// 画上商品图片
	drawImgInImg(baseImage, goodImage, 71, 69, 660, 660);

	// 画上小程序二维码
	drawImgInImg(baseImage, qrCodeImage, 448, 767, 300, 300);

	// 写上商品名称,截取前面的12个字符长度
	if (goodName.length() > 12) {
		goodName = goodName.substring(0, 12) + "...";
	}
	Color colorComm = new Color(60, 60, 60);
	drawTextInImg(baseImage, goodName, 65, 867, colorComm, 28);

	Color priceColor = new Color(240, 20, 20);
	drawTextInImg(baseImage, "现价  ", 65, 787, colorComm, 24);
	drawTextInImg(baseImage, "¥ ", 120, 787, priceColor, 24);
	drawTextInImg(baseImage, retailPrice.toString(), 145, 787, priceColor, 34);
	drawStrikethroughTextInImg(baseImage, counterPrice.toString(), 275, 787, colorComm, 24);
	
	
	// 写上商城名称
	// drawTextInImgCenter(baseImage, shopName, 98);

	// 转jpg
	BufferedImage result = new BufferedImage(baseImage.getWidth(), baseImage.getHeight(),
			BufferedImage.TYPE_3BYTE_BGR);
	result.getGraphics().drawImage(baseImage, 0, 0, null);
	ByteArrayOutputStream bs = new ByteArrayOutputStream();
	ImageIO.write(result, "jpg", bs);

	// 最终byte数组
	return bs.toByteArray();
}
 
源代码17 项目: JavaAV   文件: Image.java
public static PixelFormat getPixelFormat(BufferedImage image) {
	switch (image.getType()) {
		case BufferedImage.TYPE_3BYTE_BGR:
			return PixelFormat.BGR24;

		case BufferedImage.TYPE_4BYTE_ABGR:
		case BufferedImage.TYPE_4BYTE_ABGR_PRE:
			return PixelFormat.ABGR;

		case BufferedImage.TYPE_BYTE_BINARY:
			return PixelFormat.RGB444;

		case BufferedImage.TYPE_BYTE_INDEXED:
			return PixelFormat.RGB555;

		case BufferedImage.TYPE_BYTE_GRAY:
			return PixelFormat.GRAY8;

		case BufferedImage.TYPE_INT_ARGB:
		case BufferedImage.TYPE_INT_ARGB_PRE:
			return PixelFormat.ARGB;

		case BufferedImage.TYPE_INT_RGB:
			return PixelFormat.RGB24;

		case BufferedImage.TYPE_USHORT_GRAY:
			return PixelFormat.GRAY16;

		case BufferedImage.TYPE_USHORT_555_RGB:
			return PixelFormat.RGB555;

		case BufferedImage.TYPE_USHORT_565_RGB:
			return PixelFormat.RGB565;

		case BufferedImage.TYPE_CUSTOM:
			return null;

		default:
			return null;
	}
}
 
源代码18 项目: mall   文件: QCodeService.java
/**
     * 将商品图片,商品名字画到模版图中
     *
     * @param qrCodeImg  二维码图片
     * @param goodPicUrl 商品图片地址
     * @param goodName   商品名称
     * @return
     * @throws IOException
     */
    private byte[] drawPicture(InputStream qrCodeImg, String goodPicUrl, String goodName) throws IOException {
        //底图
        ClassPathResource redResource = new ClassPathResource("back.png");
        BufferedImage red = ImageIO.read(redResource.getInputStream());


        //商品图片
        URL goodPic = new URL(goodPicUrl);
        BufferedImage goodImage = ImageIO.read(goodPic);

        //小程序二维码
        BufferedImage qrCodeImage = ImageIO.read(qrCodeImg);

        // --- 画图 ---

        //底层空白 bufferedImage
        BufferedImage baseImage = new BufferedImage(red.getWidth(), red.getHeight(), BufferedImage.TYPE_4BYTE_ABGR_PRE);

        //画上图片
        drawImgInImg(baseImage, red, 0, 0, red.getWidth(), red.getHeight());

        //画上商品图片
        drawImgInImg(baseImage, goodImage, 71, 69, 660, 660);

        //画上小程序二维码
        drawImgInImg(baseImage, qrCodeImage, 448, 767, 300, 300);

        //写上商品名称
        drawTextInImg(baseImage, goodName, 65, 867);

        //写上商城名称
//        drawTextInImgCenter(baseImage, shopName, 98);


        //转jpg
        BufferedImage result = new BufferedImage(baseImage.getWidth(), baseImage
                .getHeight(), BufferedImage.TYPE_3BYTE_BGR);
        result.getGraphics().drawImage(baseImage, 0, 0, null);
        ByteArrayOutputStream bs = new ByteArrayOutputStream();
        ImageIO.write(result, "jpg", bs);

        //最终byte数组
        return bs.toByteArray();
    }
 
源代码19 项目: litemall   文件: QCodeService.java
/**
 * 将商品图片,商品名字画到模版图中
 *
 * @param qrCodeImg  二维码图片
 * @param goodPicUrl 商品图片地址
 * @param goodName   商品名称
 * @return
 * @throws IOException
 */
private byte[] drawPicture(InputStream qrCodeImg, String goodPicUrl, String goodName) throws IOException {
    //底图
    ClassPathResource redResource = new ClassPathResource("back.png");
    BufferedImage red = ImageIO.read(redResource.getInputStream());


    //商品图片
    URL goodPic = new URL(goodPicUrl);
    BufferedImage goodImage = ImageIO.read(goodPic);

    //小程序二维码
    BufferedImage qrCodeImage = ImageIO.read(qrCodeImg);

    // --- 画图 ---

    //底层空白 bufferedImage
    BufferedImage baseImage = new BufferedImage(red.getWidth(), red.getHeight(), BufferedImage.TYPE_4BYTE_ABGR_PRE);

    //画上图片
    drawImgInImg(baseImage, red, 0, 0, red.getWidth(), red.getHeight());

    //画上商品图片
    drawImgInImg(baseImage, goodImage, 71, 69, 660, 660);

    //画上小程序二维码
    drawImgInImg(baseImage, qrCodeImage, 448, 767, 300, 300);

    //写上商品名称
    drawTextInImg(baseImage, goodName, 65, 867);

    //写上商城名称
    //        drawTextInImgCenter(baseImage, shopName, 98);


    //转jpg
    BufferedImage result = new BufferedImage(baseImage.getWidth(), baseImage
            .getHeight(), BufferedImage.TYPE_3BYTE_BGR);
    result.getGraphics().drawImage(baseImage, 0, 0, null);
    ByteArrayOutputStream bs = new ByteArrayOutputStream();
    ImageIO.write(result, "jpg", bs);

    //最终byte数组
    return bs.toByteArray();
}
 
源代码20 项目: pumpernickel   文件: ByteBGRConverter.java
public void next(byte[] dest) {
	if (byteIterator != null) {
		byteIterator.next(dest);
		byte swap;
		int rowLength = width * byteIterator.getPixelSize();

		switch (originalType) {
		case PixelIterator.TYPE_3BYTE_RGB:
			for (int a = 0; a < rowLength; a += 3) {
				swap = dest[a];
				dest[a] = dest[a + 2];
				dest[a + 2] = swap;
			}
			break;
		case BufferedImage.TYPE_3BYTE_BGR:
			break;
		case PixelIterator.TYPE_4BYTE_ARGB:
		case PixelIterator.TYPE_4BYTE_ARGB_PRE:
			for (int a = 0; a < rowLength; a += 3) {
				dest[a] = dest[a + 3];
				swap = dest[a + 1];
				dest[a + 1] = dest[a + 2];
				dest[a + 2] = swap;
			}
			break;
		case BufferedImage.TYPE_4BYTE_ABGR:
		case BufferedImage.TYPE_4BYTE_ABGR_PRE:
			for (int a = 0; a < rowLength; a += 4) {
				dest[a] = dest[a + 1];
				dest[a + 1] = dest[a + 2];
				dest[a + 2] = dest[a + 3];
			}
			break;
		case BufferedImage.TYPE_BYTE_GRAY:
			for (int a = width - 1; a >= 0; a--) {
				dest[3 * a] = dest[a];
				dest[3 * a + 1] = dest[a];
				dest[3 * a + 2] = dest[a];
			}
			break;
		case BufferedImage.TYPE_BYTE_INDEXED:
			if (rTable == null) {
				rTable = new byte[indexModel.getMapSize()];
				gTable = new byte[indexModel.getMapSize()];
				bTable = new byte[indexModel.getMapSize()];
				indexModel.getReds(rTable);
				indexModel.getGreens(gTable);
				indexModel.getBlues(bTable);
			}
			for (int a = width - 1; a >= 0; a--) {
				dest[3 * a + 2] = rTable[dest[a]];
				dest[3 * a + 1] = gTable[dest[a]];
				dest[3 * a] = bTable[dest[a]];
			}
			break;
		default:
			throw new RuntimeException("Unrecognized type ("
					+ BufferedImageIterator.getTypeName(originalType) + ")");
		}
	} else {
		if (intScratch == null) {
			intScratch = new int[intIterator.getMinimumArrayLength()];
		}
		intIterator.next(intScratch);
		switch (originalType) {
		case BufferedImage.TYPE_INT_ARGB:
		case BufferedImage.TYPE_INT_ARGB_PRE:
			// TODO: handle pre-multiplied alpha correctly
			// (see ByteBGRAConverter for example)
		case BufferedImage.TYPE_INT_RGB:
			for (int a = 0; a < width; a++) {
				dest[3 * a + 2] = (byte) ((intScratch[a] >> 16) & 0xff);
				dest[3 * a + 1] = (byte) ((intScratch[a] >> 8) & 0xff);
				dest[3 * a] = (byte) ((intScratch[a]) & 0xff);
			}
			break;
		case BufferedImage.TYPE_INT_BGR:
			for (int a = 0; a < width; a++) {
				dest[3 * a + 2] = (byte) ((intScratch[a]) & 0xff);
				dest[3 * a + 1] = (byte) ((intScratch[a] >> 8) & 0xff);
				dest[3 * a] = (byte) ((intScratch[a] >> 16) & 0xff);
			}
			break;
		default:
			throw new RuntimeException("Unrecognized type ("
					+ BufferedImageIterator.getTypeName(originalType) + ")");
		}
	}
}