关于半透明遮罩的优化(关机效果)

最近在搞JSI 的重构,少来冒泡了。
发一个中午的刚用到的小技巧:

在关机效果实现上,现在一般根据浏览器特征分别使用 虑镜/样式/图片 去模拟。

其中Opera是不支持网页透明的,只能用png的alpha透明模拟。
所以,我们需要一张特别的小图片。一个象素,alpha透明。

但是这个单象素图片的出现,感觉有点怪怪的,而且当网速很慢的时候,装载这个小图片还会延迟,效果不好。

不过,Opera的另外一个特性,可以避免这个问题:data:协议的支持。

对于这种小图片,完全可以编码到样式里面


css 代码
  1. background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mM4ffp0AwAHqALiYeNxSgAAAABJRU5ErkJggg==)


好了,如此一来,关机效果的实现,就没有图片这个累赘了。


图片的生成:

图片的生成,浪费我一个中午的时间:(
开始本想找个软件做掉,最后没发现一个如意的,干脆,自己看看api,自己写了一下:
代码如下:
java 代码
  1. public static void main(String[] args) throws IOException {
  2. BufferedImage image = new BufferedImage(1, 1,
  3. BufferedImage.TYPE_INT_ARGB);
  4. Graphics2D g2d = image.createGraphics();
  5. // RGBA #cccccc80
  6. g2d.setColor(new Color(0xcc, 0xcc, 0xcc, 0x80));
  7. g2d.fillRect(0, 0, 1, 1);
  8. g2d.dispose();
  9. IIOImage iioImage = new IIOImage(image, null, null);
  10. ImageTypeSpecifier type = ImageTypeSpecifier
  11. .createFromRenderedImage(image);
  12. ImageWriter writer = (ImageWriter) ImageIO.getImageWriters(type, "png")
  13. .next();
  14. ByteArrayOutputStream out = new ByteArrayOutputStream();
  15. writer.setOutput(ImageIO.createImageOutputStream(out));
  16. writer.write(null, iioImage, null);
  17. BASE64Encoder encoder = new BASE64Encoder();
  18. String result = encoder.encode(out.toByteArray()).replaceAll("[\r\n]",
  19. "");
  20. System.out.println("data:image/png;base64," + result);
  21. }

需要其他颜色,自己修改一下代码即是。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值