如何在半透明图像周围绘制边框? (css)

How to draw a border around a semitransparent image? (css)

我想知道如何在半透明的图像周围绘制边框,也就是说,我不需要框形边框,也不需要边框半径,而是实际适用于图像形状的边框本身。

根据this post it's not possible, and this one 简单地建议在某些照片编辑程序(例如 Photoshop)中编辑图像。

但是如果图像输入不是我的怎么办?如果我需要处理一系列用户输入到我的网站的图像并添加该边框,则软件选项将不起作用。

解决这个问题的一种方法是使用 canvas,但是没有一种纯粹、简单的 css 方法吗?谢谢

截至目前(2015 年 1 月 31 日)有一种方法可以在不使用 canvas、使用纯 CSS 且仅使用 2代码行。

诀窍是使用 css filter-webkit-filter 属性绘制两个没有模糊的阴影,一个用于正轴,一个用于负轴,这将环绕图像周围,这将提供(希望)期望的效果。

注意:IE完全不支持css过滤器(希望Spartan做得更好),这里是compatibility table. (Thanks web-tiki)

第一个代码段 (fiddle) 将应用最简单的边框

img {
  -webkit-filter: drop-shadow(1px 1px 0 black)
                  drop-shadow(-1px -1px 0 black);
  filter: drop-shadow(1px 1px 0 black) 
          drop-shadow(-1px -1px 0 black);
}

body {
  background-color: lightcoral;
}
<img src="http://i.imgur.com/GZoXRjS.png" width="250">

如您所见,有些图像(如 this awesome baymax render)需要稍微调整一下,您会看到右边框比左边框小一点。

考虑到这一点,这里是完美的边框代码段 (fiddle),只是对值进行了非常小的调整。

img {
  -webkit-filter: drop-shadow(2px 1px 0 black)
                  drop-shadow(-1px -1px 0 black);
  filter: drop-shadow(2px 1px 0 black) 
          drop-shadow(-1px -1px 0 black);
}

body {
  background-color: khaki;
}
<img src="http://i.imgur.com/GZoXRjS.png" width="250">

这应该很好地覆盖了边界,但我们仍然可以从中获得更多乐趣,看看这个很棒的亮度效果片段 (fiddle)。

img{
    -webkit-filter: drop-shadow(1px 1px 0 black) 
                    drop-shadow(-1px -1px 0 white);
    filter:drop-shadow(1px 1px 0 black) 
           drop-shadow(-1px -1px 0 white);
}

body{
    background-color:lightblue;
}
<img src="http://i.imgur.com/GZoXRjS.png" width="250">

希望这对任何想知道半透明图像环绕边框可能性的人有所帮助!