HTML / CSS에서 이미지를 회색조로 변환


619

컬러 비트 맵을 회색조로 표시하는 간단한 방법이 HTML/CSS있습니까?

IE 호환 가능 할 필요는 없으며 FF3 및 / 또는 Sf3에서 작동하면 충분합니다.

나는 SVGCanvas와 Canvas 로 모두 할 수 있다는 것을 알고 있지만 지금은 많은 일처럼 보입니다.

이것을하는 정말로 게으른 사람의 방법이 있습니까?


14
"IE와 호환 될 필요는 없습니다 (그렇지 않을 것입니다)" ?? IE는 1997 년 이후 DX 필터 세트를 제공하고 있으며 (IE4) CSS만으로도이 작업을 수행합니다. 이제 IE10에서 DX 필터를 삭제 했으며 표준 SVG 기반 필터를 엄격하게 준수합니다. 당신은 한 번 봐 걸릴 수도 있습니다 이 데모를 .
vulcan raven

8
@vulcanraven 실제로 '단순한 CSS'는 아닙니다. IE에서 활성 스크립팅을 비활성화하면 필터 작동이 중지됩니다.
robertc

3
@ robertc, 맞습니다. 반대로, 웹 개발자가 HTML 전용 버전 폴백을 구현하지 않는 한 모든 브라우저에서 Javascript를 비활성화하면 Stackoverflow를 포함한 거의 모든 RIA가 작동을 멈 춥니 다.
raven

2
CSS stackoverflow.com/questions/286275/gray-out-image-with-css/…를 사용하십시오 .이 질문에 대한 답변을 얻으십시오
Sakata Gintoki

답변:


728

CSS 필터에 대한 지원은 Webkit에 포함되었습니다. 이제 브라우저 간 솔루션이 생겼습니다.

img {
  filter: gray; /* IE6-9 */
  -webkit-filter: grayscale(1); /* Google Chrome, Safari 6+ & Opera 15+ */
  filter: grayscale(1); /* Microsoft Edge and Firefox 35+ */
}

/* Disable grayscale on hover */
img:hover {
  -webkit-filter: grayscale(0);
  filter: none;
}
<img src="http://lorempixel.com/400/200/">


Internet Explorer 10은 어떻습니까?

회색 과 같은 폴리 필을 사용할 수 있습니다 .


1
@CamiloMartin CSS 필터는 Chrome 만 지원합니다
Salman von Abbas

2
업데이트 : 최신 안정 버전의 Chrome (19)은 이제 CSS 필터를 지원합니다. 예이! =)
Salman von Abbas

6
Opera를위한 솔루션이 있습니까?
Rustam

23
그렇다면 IE10의 솔루션은 무엇입니까?
Tom Auger

2
후손 : @TomAuger의 경우이 Q & A 에는 IE10에 대한 특정 지침이 있습니다.
Barney

127

에 이어 brillout.com의 대답은 , 또한 로마 Nurik의 대답은 , 다소하여 '더 SVG의 요구 사항을 완화, 당신은 단지 하나의 SVG 파일과 일부 CSS를 사용하여 파이어 폭스에서 이미지를 채도 수 있습니다.

SVG 파일은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1"
     baseProfile="full"
     xmlns="http://www.w3.org/2000/svg">
    <filter id="desaturate">
        <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0
                                             0.3333 0.3333 0.3333 0 0
                                             0.3333 0.3333 0.3333 0 0
                                             0      0      0      1 0"/>
    </filter>
</svg>

resources.svg로 저장하면 그레이 스케일로 변경하려는 모든 이미지에 대해 지금부터 재사용 할 수 있습니다.

CSS에서는 Firefox 특정 filter속성을 사용하여 필터를 참조합니다 .

.target {
    filter: url(resources.svg#desaturate);
}

원하는 경우 MS 독점 제품을 추가하고 그레이 스케일로 변환하려는 모든 이미지에 해당 클래스를 적용하십시오 (Firefox> 3.5, IE8에서 작동) .

편집 : 여기에 설명 filter된 SVG 접근 방식과 함께 SalmanPK의 답변에 새로운 CSS3 속성을 사용하는 방법을 설명 하는 멋진 블로그 게시물 이 있습니다. 이 접근법을 사용하면 다음과 같은 결과가 나타납니다.

img.desaturate{
    filter: gray; /* IE */
    -webkit-filter: grayscale(1); /* Old WebKit */
    -webkit-filter: grayscale(100%); /* New WebKit */
    filter: url(resources.svg#desaturate); /* older Firefox */
    filter: grayscale(100%); /* Current draft standard */
}

추가 브라우저 지원 정보는 여기에 있습니다 .


6
웹킷에서 다음을 수행하십시오. -webkit-filter: grayscale(100%);그런 다음 -webkit-filter: grayscale(0);제거하십시오.
SeanJA

@SeanJA 업데이트에 감사드립니다. WebKit 은 12 월
robertc

내 리눅스 랩톱과 win7 시스템 모두에서 크롬 베타로 볼 수 있습니다. 리눅스에서는 크롬에서 안정적으로 작동하지 않는 것 같습니다 (그러나 리눅스 버전은 Windows 뒤에있을 수 있습니다).
SeanJA

1
이 방법은 Chrome에서 제대로 작동하지만 Safari에서는 효과가 없습니다. FF에서는 호버링 할 때까지 이미지가 보이지 않게됩니다.
colmtuite

85

Firefox의 경우 filter.svg 파일을 만들 필요가 없으며 data URI scheme을 사용할 수 있습니다 .

첫 번째 답변의 CSS 코드를 가져 와서 다음을 제공합니다.

filter: url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'><filter%20id='grayscale'><feColorMatrix%20type='matrix'%20values='0.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200%200%200%200%200%201%200'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
filter: grayscale(100%); /* Current draft standard */
-webkit-filter: grayscale(100%); /* New WebKit */
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%); 
-o-filter: grayscale(100%);
filter: gray; /* IE6+ */

"utf-8"문자열을 파일 인코딩으로 바꾸십시오.

브라우저는 두 번째 HTTP 요청을 수행 할 필요가 없으므로이 방법은 다른 방법보다 빠릅니다.


3
두통을 피하기위한 참고 사항 : YUI Compressor는 데이터 URL에서 공백을 제거합니다. 따라서이 솔루션을 사용하려면 다른 축소기를 사용하는 것이 좋습니다.
Malte

6
@Malte 아니면 그냥 "% 20"문자열로 공백을 바꾸겠습니까?
mquandalle

@mquandalle 불행히도 IE10은 filter : gray blogs.msdn.com/b/ie/archive/2011/12/07/…를
Jedi.za

1
파이어 폭스에서 내 회색은 매우 밝습니다. 대비를 높이거나 약간 어둡게하는 방법이 있습니까? 다른 브라우저는 멋지게 보입니다.
square_eyes

27

업데이트 : IE10 및 IE11 용 JavaScript polyfill을 포함한 전체 GitHub 저장소로 만들었습니다 : https://github.com/karlhorky/gray

원래 SalmanPK의 답변을 사용 했지만 SVG 파일에 필요한 추가 HTTP 요청을 제거하기 위해 아래 변형을 만들었습니다. 인라인 SVG는 Firefox 버전 10 이상에서 작동하며 10보다 낮은 버전은 더 이상 글로벌 브라우저 시장의 1 %를 차지하지 않습니다.

그 이후 로이 블로그 게시물 에서 솔루션을 계속 업데이트 하여 색상으로 페이딩 지원, SVG로 IE 10/11 지원 및 데모에서 부분 회색조를 추가했습니다.

img.grayscale {
  /* Firefox 10+, Firefox on Android */
  filter: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='grayscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0'/></filter></svg>#grayscale");

  /* IE 6-9 */
  filter: gray;

  /* Chrome 19+, Safari 6+, Safari 6+ iOS */
  -webkit-filter: grayscale(100%);
}

img.grayscale.disabled {
  filter: none;
  -webkit-filter: grayscale(0%);
}

14

JavaScript를 사용할 수 있으면이 스크립트가 원하는 것일 수 있습니다. 크로스 브라우저에서 작동하며 지금까지 잘 작동합니다. 다른 도메인에서로드 된 이미지에는 사용할 수 없습니다.

http://james.padolsey.com/demos/grayscale/


11

오늘도 같은 문제가 발생했습니다. 처음에는 SalmanPK 솔루션을 사용 했지만 FF와 다른 브라우저마다 효과가 다르다는 것을 알았습니다. 이는 변환 매트릭스가 Chrome / IE의 필터와 같은 밝기에서만 작동하기 때문입니다. 놀랍게도 SVG의 대안적이고 간단한 솔루션도 FF4 +에서 작동하고 더 나은 결과를 생성한다는 것을 알았습니다.

<svg xmlns="http://www.w3.org/2000/svg">
  <filter id="desaturate">
    <feColorMatrix type="saturate" values="0"/>
  </filter>
</svg>

CSS로 :

img {
    filter: url(filters.svg#desaturate); /* Firefox 3.5+ */
    filter: gray; /* IE6-9 */
    -webkit-filter: grayscale(1); /* Google Chrome & Safari 6+ */
}

또 하나의 경고는 IE10이 표준 호환 모드에서 더 이상 "필터 : 회색 :"을 지원하지 않으므로 작동하려면 헤더에서 호환 모드 스위치가 필요하다는 것입니다.

<meta http-equiv="X-UA-Compatible" content="IE=9" />

2
더 좋고 간단한 솔루션 인 것 같습니다. SalmanPK와 mquandalle이 솔루션을 업데이트하면 좋을 것입니다. 분명히 그들이 사용하는 매트릭스 가 깨졌습니다. <br> <br> 다음은 임베디드 데이터 버전입니다. filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'saturate\' values=\'0\'/></filter></svg>#grayscale");
psdie

11

CSS만으로 그레이 스케일을 달성하는 가장 간단한 방법은 filter속성 을 이용하는 것 입니다.

img {
    -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
    filter: grayscale(100%);
}

이 속성은 여전히 ​​완전히 지원되지 않으며 -webkit-filter모든 브라우저에서 지원하기 위해 속성이 필요 합니다.


7

CSS3 또는 독점 -webkit-또는 -moz-CSS 속성을 사용 하더라도 가능하지 않은 것처럼 보입니다 .

그러나 지난 6 월부터 HTML에서 SVG 필터를 사용하는 이 게시물을 찾았 습니다 . 현재 브라우저에서는 사용할 수 없지만 (사용자 정의 WebKit 빌드에서 시연 한 데모) 개념 증명으로 매우 인상적입니다.


7

다른 답변에서 무시 된 IE10 + 지원에 대해 묻는 사람들은 다음 CSS를 확인하십시오.

img.grayscale:hover {
    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale");
}

svg {
    background:url(http://4.bp.blogspot.com/-IzPWLqY4gJ0/T01CPzNb1KI/AAAAAAAACgA/_8uyj68QhFE/s400/a2cf7051-5952-4b39-aca3-4481976cb242.jpg);
}

svg image:hover {
    opacity: 0;
}

이 마크 업에 적용 :

<!DOCTYPE HTML>
<html>
<head>

    <title>Grayscaling in Internet Explorer 10+</title>

</head>
<body>

    <p>IE10 with inline SVG</p>
    <svg xmlns="http://www.w3.org/2000/svg" id="svgroot" viewBox="0 0 400 377" width="400" height="377">
      <defs>
         <filter id="filtersPicture">
           <feComposite result="inputTo_38" in="SourceGraphic" in2="SourceGraphic" operator="arithmetic" k1="0" k2="1" k3="0" k4="0" />
           <feColorMatrix id="filter_38" type="saturate" values="0" data-filterid="38" />
        </filter>
      </defs>
      <image filter="url(&quot;#filtersPicture&quot;)" x="0" y="0" width="400" height="377" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://4.bp.blogspot.com/-IzPWLqY4gJ0/T01CPzNb1KI/AAAAAAAACgA/_8uyj68QhFE/s1600/a2cf7051-5952-4b39-aca3-4481976cb242.jpg" />
    </svg>

</body>
</html>

더 많은 데모를 보려면 IE testdrive의 CSS3 그래픽 섹션 과이 오래된 IE 블로그 http://blogs.msdn.com/b/ie/archive/2011/10/14/svg-filter-effects-in-ie10.aspx를 확인하십시오.


7

Internet Explorer에서 필터 속성을 사용하십시오.

웹킷 및 Firefox에서는 현재 CSS만으로 이미지를 desatuarte 할 수있는 방법이 없습니다. 따라서 클라이언트 측 솔루션에 캔버스 또는 SVG를 사용해야합니다.

그러나 SVG를 사용하는 것이 더 우아하다고 생각합니다. Firefox 및 웹킷 모두에서 작동하는 SVG 솔루션에 대한 내 블로그 게시물을 확인하십시오. http://webdev.brillout.com/2010/10/desaturate-image-without-javascript.html

SVG는 HTML이기 때문에 엄밀히 말하면 솔루션은 순수한 html + css입니다 :-)


안녕 brillout. 사파리에서 그레이 스케일이 실제로 실패한 것으로 나타났습니다. 후속 조치 요? 감사합니다
swan

1
SVG는 HTML 이 아닙니다 . 완전히 다른 사양입니다.
Camilo Martin


1
@robertc이 링크는 SVG에 HTML을 넣는 것에 관한 것이지만 여기에 SVG 사양HTML 사양이 있습니다. 둘 다 서로 비슷하거나 XML과 같다는 사실이 똑같은 것을 의미하지는 않습니다.
Camilo Martin

1
그러나 그것은 참조 에서 SVG 사양에 연결됩니다 ... SVG를 정의하지 않고 브라우저가 구문 분석해야한다고 말합니다. 이와 관련하여 Javascript 또는 CSS와 같습니다.
카밀로 마틴

6

최신 브라우저에서이 작업을 수행하는 새로운 방법이 한동안 사용되었습니다.

백그라운드 블렌드 모드를 사용하면 흥미로운 효과를 얻을 수 있으며 그 중 하나는 회색조 변환입니다.

흰색 배경에 설정된 광도 값으로 허용됩니다. (회색으로 보시려면 마우스를 올리세요)

.test {
  width: 300px;
  height: 200px;
    background: url("http://placekitten.com/1000/750"), white; 
    background-size: cover;
}

.test:hover {
    background-blend-mode: luminosity;
}
<div class="test"></div>

광도는 이미지에서 가져오고 색상은 배경에서 가져옵니다. 항상 흰색이므로 색상이 없습니다.

그러나 훨씬 더 많은 것을 허용합니다.

효과 설정 3 레이어에 애니메이션을 적용 할 수 있습니다. 첫 번째 이미지는 이미지이고 두 번째 이미지는 흰색-검정색 그라디언트입니다. 여기에 곱하기 혼합 모드를 적용하면 흰색 부분에서는 이전과 같이 흰색 결과가 나타나지만 검은 부분의 원래 이미지 (흰색을 곱하면 흰색이되고 검은 색을 곱해도 효과가 없음)

그라디언트의 흰색 부분에서는 이전과 동일한 효과를 얻습니다. 그라디언트의 검은 부분에서 이미지 자체를 블렌딩하고 결과는 수정되지 않은 이미지입니다.

이제 필요한 것은 그라디언트를 움직여이 효과를 동적으로 만드는 것입니다. (색상으로 가리키면됩니다)

div {
    width: 600px;
    height: 400px;
}

.test {
    background: url("http://placekitten.com/1000/750"), 
linear-gradient(0deg, white 33%, black 66%), url("http://placekitten.com/1000/750"); 
    background-position: 0px 0px, 0px 0%, 0px 0px;
    background-size: cover, 100% 300%, cover;
    background-blend-mode: luminosity, multiply;
    transition: all 2s;
}

.test:hover {
    background-position: 0px 0px, 0px 66%, 0px 0px;
}
<div class="test"></div>

참고

호환성 매트릭스


1
@Andy 나는 현대 브라우저에서
vals

img태그가 이미지에 사용되지 않는 경우 어떻게 적용 할 수 있습니까?background: url()
Mohammad Elbanna

1
@MohammadElbanna 백그라운드 블렌드 모드 대신 믹스 블렌드 모드를 사용해야합니다
vals

5
img {
    -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
    filter: grayscale(100%);
}

4

어쩌면이 방법은 당신을 도울 수

img {
    -webkit-filter: grayscale(100%); /* Chrome, Safari, Opera */
    filter: grayscale(100%);
}

w3schools.org


3

독점 CSS 속성을 올바르게 사용하는 것을 기억하면 실제로 IE를 사용하는 것이 더 쉽습니다. http://www.ssi-developer.net/css/visual-filters.shtmlFILTER: Gray 에서 시도 하십시오.

Ax 의 방법은 단순히 이미지를 투명하게 만들고 그 뒤에 검은 배경을 갖습니다. 나는 이것이 회색조라고 주장 할 수 있다고 확신합니다.

Javascript를 사용하고 싶지는 않지만 Javascript를 사용해야한다고 생각합니다. 서버 측 언어를 사용하여이를 수행 할 수도 있습니다.


나는 심지어 Windows 상자가 없기 때문에 고마워하지만 나에게는 거의 쓸모가 없습니다.
Ken

이 경우 IE가있는 가상 머신으로 보거나 ax의 메소드를 구현하거나 캔버스를 사용할 수 있습니다. 캔버스가있는 큰 이미지의 그레이 스케일링은 Javascript 엔진에서 상당히 부담이 될 수 있습니다.
alex

7
filter: grayInternet Explorer에는 버전 4 이후로 존재 합니다. 그들은 그들의 제품을 위해 많은 쓰레기를 가져 왔습니다. -그러나 그들은 실제로 이런 것들로 시간을 앞서고있었습니다
Pekka


2

웹킷의 기본 CSS 필터에 대한 지원이 현재 버전 19.0.1084.46에서 추가되었습니다.

따라서 -webkit-filter : grayscale (1)이 작동하며 웹킷에 대한 SVG 방식보다 쉽습니다


2

다음은 불투명도를 선택할 수있는 LESS의 믹스 인입니다. 일반 CSS의 변수를 다른 비율로 직접 채우십시오.

깔끔한 힌트 는 매트릭스에 포화 유형을 사용하므로 백분율을 변경하기 위해 멋진 작업을 수행 할 필요가 없습니다.

.saturate(@value:0) {
    @percent: percentage(@value);

    filter: url("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'><filter%20id='grayscale'><feColorMatrix%20type='saturate'%20values='@value'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
    filter: grayscale(@percent); /* Current draft standard */
    -webkit-filter: grayscale(@percent); /* New WebKit */
    -moz-filter: grayscale(@percent);
    -ms-filter: grayscale(@percent);
    -o-filter: grayscale(@percent);
}

그런 다음 사용하십시오.

img.desaturate {
    transition: all 0.2s linear;
    .saturate(0);
    &:hover {
        .saturate(1);
    }
}

2

오래된 파이어 폭스에 프리픽스를 선택하면 새로운 파이어 폭스에 프리픽스를 사용할 필요가 없기 때문에 완전히 사용하기 위해 너무 많은 프리픽스를 사용할 필요는 없습니다.

따라서 완전히 사용하려면이 코드를 충분히 사용하십시오.

img.grayscale {
    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */
    filter: gray; /* IE6-9 */
    -webkit-filter: grayscale(100%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */
}

img.grayscale.disabled {
    filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale");
    filter: none;
    -webkit-filter: grayscale(0%);
}

2

다른 답변에 대한 보완으로 SVG의 매트릭스 두통 없이 FF에서 이미지의 절반을 채도 감소시킬 수 있습니다.

<feColorMatrix type="saturate" values="$v" />

어디 $v사이에 0하고 1. 와 같습니다 filter:grayscale(50%);.

라이브 예 :

MDN에 대한 참조


1

robertc의 답변을 바탕으로 :

다음과 같은 행렬을 사용하는 대신 컬러 이미지에서 회색조 이미지로 올바르게 변환 하려면 :

0.3333 0.3333 0.3333 0 0
0.3333 0.3333 0.3333 0 0
0.3333 0.3333 0.3333 0 0
0      0      0      1 0

다음과 같이 변환 행렬을 사용해야합니다.

0.299 0.299 0.299 0
0.587 0.587 0.587 0
0.112 0.112 0.112 0
0     0     0     1

RGBA (red-green-blue-alpha) 모델을 기반으로하는 모든 유형의 이미지에 적합합니다.

매트릭스를 사용해야하는 이유에 대한 자세한 내용을 보려면 robertc의 다음 링크를 확인하십시오.


0.3333이 잘못되었다는 데 동의합니다. 0.2126 0.7152 0.0722 0 0<fecolormatrix type="saturate" values="0">
Neil

"그리고 여기에 당신이 어떤 C 번호를 찾을 수 VB 코드는"여기에 인터넷 아카이브에서 찾을 수 있습니다에 대한 링크 : web.archive.org/web/20110220101001/http://www.bobpowell.net/...
thisgeek

"휘도 및 색차 신호"링크가 끊어졌습니다. 대체품을 찾을 수 없습니다.
thisgeek

0

끔찍하지만 실행 가능한 솔루션 중 하나 : Flash 객체를 사용하여 이미지를 렌더링하면 Flash에서 가능한 모든 변형이 가능합니다.

만약 사용자 출혈 가장자리 브라우저와를 사용하는 경우 파이어 폭스 3.5, 사파리 4를 지원 그것 (내가 알고하지 않습니다 중 하나를 할 / 것), 당신은 CSS를 조정할 수있는 컬러 프로파일 그레이 스케일 ICC로 설정, 이미지의 속성을 프로필 URL. 그러나 그것은 많은 경우입니다!


0

오래된 브라우저를위한 대안 의사 요소 나 인라인 태그에 의해 생성 된 사용 마스크 수 있습니다.

절대 위치 지정은 img (또는 텍스트 영역에서 클릭이나 선택이 필요하지 않음)를 가리키면 rgba () 또는 translucide png를 통해 색상 스케일의 효과를 밀접하게 모방 할 수 있습니다. .

하나의 단일 색상 스케일을 제공하지 않지만 범위를 벗어난 색상을 음영 처리합니다.

의사 요소를 통해 10 가지 색상으로 코드 펜에서 테스트하십시오. 마지막은 회색입니다. http://codepen.io/gcyrillus/pen/nqpDd (다른 이미지로 전환하려면 새로 고침)



0

이 jquery 플러그인을 사용해보십시오. 이것은 순수한 HTML 및 CSS 솔루션은 아니지만 원하는 것을 달성하는 게으른 방법입니다. 용도에 맞게 그레이 스케일을 사용자 정의 할 수 있습니다. 다음과 같이 사용하십시오.

$("#myImageID").tancolor();

대화식 데모가 있습니다. 당신은 그것으로 놀 수 있습니다.

사용법에 대한 문서를 확인하십시오. 매우 간단합니다. 문서


0

Firefox에서 그레이 스케일을 백분율로 표시하는 경우 포화 필터를 대신 사용하십시오 ( '포화'검색).

filter: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='saturate'><feColorMatrix in='SourceGraphic' type='saturate' values='0.2' /></filter></svg>#saturate"

-1

당신이나 미래에 비슷한 문제에 직면 한 사람이 PHP에 열려 있다면. (HTML / CSS를 말했지만 백엔드에서 이미 PHP를 사용하고있을 것입니다.) 다음은 PHP 솔루션입니다.

PHP GD 라이브러리에서 가져 와서 프로세스를 자동화하는 변수를 추가했습니다 ...

<?php
$img = @imagecreatefromgif("php.gif");

if ($img) $img_height = imagesy($img);
if ($img) $img_width = imagesx($img);

// Create image instances
$dest = imagecreatefromgif('php.gif');
$src = imagecreatefromgif('php.gif');

// Copy and merge - Gray = 20%
imagecopymergegray($dest, $src, 0, 0, 0, 0, $img_width, $img_height, 20);

// Output and free from memory
header('Content-Type: image/gif');
imagegif($dest);

imagedestroy($dest);
imagedestroy($src);

?>

4
@Tom, 원래 질문에 대한 투표 및 즐겨 찾기를 기반으로 OP가 이것이 가능한지 궁금한 유일한 사람은 아닙니다. 물론이 답변은 규칙을 구부릴 수는 있지만 많은 사람들에게 유용한 답변을 내리는 데는 요점이 없습니다.
Michael Martin-Smucker

1
@Tom, 나는 그것이 질문에 대한 정확한 대답은 아니지만, 자바 스크립트의 "번거 로움"없이 그레이 스케일의 문제를 실제로 "해결"하기 때문에 유용 할 수 있습니다. 아마도 PHP를 고려하거나 알지 못했습니다. GD, 의도 된 피해 없음. @ mlms13 바로 그 점이었습니다. 감사합니다 :)
Trufa

다른 사용자 들이 내 마음에서 벗어난 이 게시물의 혜택을 누릴 수 있다는 점 에 대해서는 "나쁘게 생각한다" . 사과 @Trufa.
jolt

3
그것은 나를 도와 주었고, 다른 막 다른 길 끝에 나를 올바른 길로 안내했습니다. "imagefilter ($ source, IMG_FILTER_GRAYSCALE);"사용하여 발견 훨씬 더 나은 결과를 주었다. (PHP 5 전용)
chrismacp

5
사실상 주제가 아니기 때문에 투표에 실패했습니다. 서버 측에서 이미지의 회색조를 조정하는 것은 CSS / HTML과 완전히 다릅니다.
Simon Steinberger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.