Плохие результаты из серого фильтра SVG на темном изображении

StackOverflow https://stackoverflow.com/questions/19846999

  •  29-07-2022
  •  | 
  •  

Вопрос

Когда я применяю фильтр SVG GreyScale на темное изображение, я получаю значительную полосу в результатах. Фильтр, который я использую, это:

     <!doctype html>
     <html>
     <head>
     <style>
      img {
     filter: url(#grayscale); /* Firefox */     
     filter: gray; /* IE */
    -webkit-filter: grayscale(1); /* Webkit */
    }
      img:hover {
    filter: none;
    -webkit-filter: grayscale(0);
    }
       </style>
    </head>
  <body>
  <img src="http://www.walldoze.com/static/cache/2048x2048/hd-wallpapers-space-iphone-  wallpaper-retina-2048x2048-wallpaper.jpg" width="1000">
  <svg xmlns="http://www.w3.org/2000/svg">
 <filter id="grayscale" >
 <feColorMatrix type="matrix"  values="0.3333 0.3333 0.3333 0 0.001 0.3333 0.3333 0.3333 0 0.001 0.3333 0.3333 0.3333 0 0.001 0 0 0 1 0.001"/>
  </filter>
  </svg>
  </body>
  </html>

enter image description here

Это было полезно?

Решение

Чтобы получить лучшую производительность, вы можете установить атрибут цветовой интерполяции фильтров на «srgb» на свойство фильтра:

<filter id="greyscale" color-interpolation-filters="sRGB">
  <feColorMatrix type="saturate" values="0"/>
</filter>

Ффильтры с цветовой интерполяцией, однако, не поддерживаются в сафари, насколько мне известно

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top