背景图片变透明

public class Alpha {
	public static  void transferAlpha(String imagePath,String outputDir,String outputFileName) throws Exception {
		Image image=ImageIO.read(new File(imagePath));
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
		try {
			ImageIcon imageIcon = new ImageIcon(image);
			BufferedImage bufferedImage = new BufferedImage(
					imageIcon.getIconWidth(), imageIcon.getIconHeight(),
					BufferedImage.TYPE_4BYTE_ABGR);
			Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
			g2D.drawImage(imageIcon.getImage(), 0, 0,
					imageIcon.getImageObserver());
			int alpha = 0;
			for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage
					.getHeight(); j1++) {
				for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage
						.getWidth(); j2++) {
					int rgb = bufferedImage.getRGB(j2, j1);
					int R = (rgb & 0xff0000) >> 16;
					int G = (rgb & 0xff00) >> 8;
					int B = (rgb & 0xff);
					if (((255 - R) < 30) && ((255 - G) < 30)
							&& ((255 - B) < 30)) {
						rgb = ((alpha + 1) << 24) | (rgb & 0x00ffffff);
					}
					bufferedImage.setRGB(j2, j1, rgb);
				}
			}
			g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());
			new File(outputDir).mkdir();
			ImageIO.write(bufferedImage, "png", new File(outputDir+outputFileName));
			ImageIO.write(bufferedImage, "png", byteArrayOutputStream);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {

		}
		//return byteArrayOutputStream.toByteArray();
	}
时间: 2024-10-23 19:59:50

背景图片变透明的相关文章

Windows界面编程-背景图片、透明特效使用

Windows界面编程第一篇 位图背景与位图画刷 可以通过WM_CTLCOLORDLG消息来设置对话框的背景,MSDN上对这个消息的说明如下: The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message, the dialog box can set its text and background colors us

背景图片定位

 背景图片定位(background-position)原理 A. 语法:Background-position:水平位置 垂直位置 B. 水平位置/垂直位置设置方法: 1) 数值(px)正负值都可以,正数值表示向右移动或向下移动,负数值表示向左或向上移动: 2) 百分比(%)范围:0%-100% 3) 关键词:水平位置:left(左) center(中) right(右) 垂直位置:top(上) center(中) bottom(下) 默认情况下,background-position的原点位

控件中添加GIF图片以及运用双缓冲使其不闪烁以及背景是gif时使控件(如panel)变透明

Image img = Image.FromFile(@"C:\Users\joeymary\Desktop\3.gif"); pictureBox1.Image =img.Clone() as Image; //label1.Image = img.Clone() as Image;label1.Size = img.Size; img.Dispose(); label跟pictureBox中均可使用. 由于窗体重绘会导致控件闪烁 方法一: /// <summary> /

MFC 加入背景图片并让控件背景透明

/*加入背景图片*/ BOOL CTOOLDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此加入消息处理程序代码和/或调用默认值 CDialog::OnEraseBkgnd(pDC); HBITMAP   m_hBitmap; HDC           m_hBkDC; m_hBitmap   =   ::LoadBitmap(::GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP2)); m_hBkDC     =

Qt 制作透明背景图片与裁剪图片(很实用)

这两天想做一个五子棋游戏,想从零开始自己绘制各种图片素材,将经验心得整理如下. 制作透明背景图片: void MyPainter::DrawKit() { QImage image(30, 30, QImage::Format_ARGB32); memset(image.bits(), 0x00, image.byteCount()); // 绘制图片 QPainter painter(&image); painter.setPen(QPen(Qt::red, 2, Qt::SolidLine)

一个解决chrome浏览器下input标签当autocomplete的时候背景变黄色同时input背景图片消失方案

最近在改一个bug即如标题所讲的一样,chrome浏览器下当input标签开启autocomplete的时候input的背景颜色变黄同时在input的背景图片也被覆盖了.为此百度了好久发现网上说的使用js来append操作,亲测了都不管用.除非把autocomplete=“off”关了,但这就不符合需求了 如图 网上说的改变-webkit-autofill的阴影背景是可以去除黄色背景的,但是图片依旧被覆盖了. input:-webkit-autofill{ box-shadow:0 0 0px

IE6中png背景图片透明的最好处理方法

在IE6浏览器下png(24位)的图片显示是不能透明的. 1.处理办法就是用DDPngMin.js <!--[if IE 6]> <script src="js/DDPngMin.js"></script> <script>DD_belatedPNG.fix('.ad_img img,#banner_ctr ul');</script> <![endif]--> 第一种办法适合用于背景图用颜色不能表示的情况,只能用

CSS实现背景透明而背景上的文字图片不透明

1.用图片则能兼容IE8和IE7 2.用颜色则不能兼容IE8和IE7,并且颜色层不能随着内容层自增长,只能设置一个固定高度 3.用颜色则颜色层不能包含内容层(图片和文字) 1 <!-- wrap最外层设置position:relative --> 2 <div class="wrap"> 3 <!-- bg为背景透明层 --> 4 <div class="bg"></div> 5 <!-- conte

ie6下:png图片不透明 和 背景图片为png的节点的内部标签单击事件不响应

1.png图片不透明 少量图片时:使用滤镜: _background:none; _filter:prodig:DXImageTransform.Microsoft.AlphaImageLoader(src="../a.png"); 注意: 测试发现如果把样式写在css文件里,而非当前页面的<style></style>里,则不会生效. 图片多时:使用js插件,可参考ie6里png图片不透明 2.背景图片为png的节点的内部标签单击事件不响应 参考张鑫旭的Jav