CamanJS를 사용하여 이미지 편집 도구 개발: 레이어 탐색, 혼합 모드 및 이벤트 처리
이전 튜토리얼에서는 CamanJS를 사용하여 대비, 밝기, 노이즈 등의 기본 필터를 이미지에 적용할 수 있는 이미지 편집기를 만드는 방법을 배웠습니다. CamanJS에는 향수, 핀홀, 일출 등과 같은 다른 내장 필터도 있어 이미지에 직접 적용할 수 있습니다.
이 튜토리얼에서는 레이어, 블렌드 모드, 이벤트 등 라이브러리의 고급 기능 중 일부를 다룹니다.
CamanJS의 레이어
이 첫 번째 튜토리얼에서는 이미지가 포함된 단일 레이어만 사용합니다. 우리가 적용하는 모든 필터는 이 기본 레이어만 조작합니다. CamanJS를 사용하면 여러 레이어를 생성하여 보다 복잡한 방식으로 이미지를 편집할 수 있습니다. 중첩된 레이어를 만들 수 있지만 항상 스택처럼 상위 레이어에 적용됩니다.
새 레이어를 만들어 상위 레이어에 적용할 때마다 사용되는 기본 혼합 모드는 캔버스에 새 레이어를 만드는 normal
。您可以使用 newLayer()
방법이 됩니다. 새 레이어를 생성할 때 콜백 함수를 전달할 수도 있는데, 이는 레이어를 조작하려는 경우 유용할 수 있습니다.
이 기능은 setBlendingMode()
方法设置新图层的混合模式。同样,您可以使用 opacity()
메서드를 사용하여 새 레이어의 불투명도를 제어하는 등 다양한 작업에 사용할 수 있습니다.
새 레이어를 만들면 fillColor()
方法填充纯色。您还可以使用 copyParent()
方法将父层的内容复制到新层。我们在上一个教程中学到的所有过滤器也可以应用于我们正在创建的新图层。例如,您可以使用 this.filter.brightness(10)
을 사용하여 새로 만든 레이어의 밝기를 높일 수 있습니다.
상위 이미지를 복사하거나 레이어를 단색으로 채우는 대신 레이어에 다른 이미지를 로드하여 상위 이미지에 오버레이하도록 선택할 수도 있습니다. 기본 이미지와 마찬가지로 오버레이 이미지에도 다양한 필터를 적용할 수 있습니다.
아래 코드 조각에서는 새 레이어를 단색, 상위 레이어 및 오버레이 이미지로 각각 채우는 세 개의 버튼에 클릭 이벤트 핸들러를 연결합니다.
으아아아CamanJS의 혼합 모드
이전 섹션에서는 캔버스에 추가한 새 레이어의 불투명도를 100 미만으로 유지했습니다. 이는 새 레이어가 이전 레이어를 완전히 숨기기 때문에 수행됩니다. 한 레이어를 다른 레이어 위에 배치할 때 CamanJS를 사용하면 배치 후 최종 결과를 결정하는 혼합 모드를 지정할 수 있습니다. 블렌딩 모드는 기본적으로 normal
로 설정되어 있습니다.
즉, 캔버스에 새 레이어를 추가하면 그 아래 레이어가 보이지 않게 됩니다. 이 라이브러리에는 10가지 혼합 모드가 있습니다. 正常
、乘法
、屏幕
、覆盖
、差异
、添加
、排除
、softLight
、排除
和暗化
입니다.
앞서 언급했듯이 normal
混合模式将最终颜色设置为等于新图层的颜色。 multiply
混合模式通过将各个通道相乘,然后将结果除以 255 来确定像素的最终颜色。 multiply
和 addition
블렌딩 모드는 최종 색상을 새 레이어의 색상과 동일하게 설정합니다. 곱하기
혼합 모드는 개별 채널을 곱하고 그 결과를 255로 나누어 픽셀의 최종 색상을 결정합니다. 곱하기
와 덧셈
혼합 모드의 차이점은 비슷하게 작동하지만 채널을 빼고 더합니다.
darken
混合模式将像素的最终颜色设置为等于各个颜色通道的最低值。 lighten
混合模式将像素的最终颜色设置为等于各个颜色通道的最高值。 exclusion
混合模式与 difference
有点相似,但它将对比度设置为较低的值。在 screen
블렌딩 모드의 경우 각 레이어의 색상을 반전시킨 후 곱한 후 다시 반전시켜 최종 색상을 얻습니다.
밑색이 더 어두우면 overlay
混合模式的作用类似于 multiply
;如果底部颜色较浅,则其作用类似于 screen
.
CamanJS를 사용하면 서로 다른 레이어의 색상이 다르게 상호 작용하도록 원하는 경우 자신만의 혼합 모드를 정의할 수도 있습니다. 이 시리즈의 다음 튜토리얼에서 이에 대해 다룰 것입니다.
이미지에 다양한 혼합 모드를 적용하는 JavaScript 코드는 다음과 같습니다.
으아아아위 코드 조각에서는 입력 필드에서 16진수 색상 값을 가져옵니다. 그런 다음 해당 색상을 새 레이어에 적용합니다. 유사한 방식으로 다른 혼합 모드를 적용하는 코드를 작성할 수 있습니다.
尝试在输入字段中指定您选择的颜色,然后通过单击相应的按钮应用任何混合模式。在示例中,我已将混合模式应用于纯色,但您也可以将它们应用于上一节中的重叠图像。
CamanJS 中的事件
如果您在第一个教程或第二个教程的演示中上传了任何大图像,您可能会注意到,任何应用的滤镜或混合模式的结果在很长一段时间后变得明显。
大图像具有大量像素,在应用特定混合模式后计算每个像素的不同通道的最终值可能非常耗时。例如,当对尺寸为 1920*1080 的图像应用 multiply
混合模式时,设备必须执行超过 600 万次乘法和除法。
在这种情况下,您可以使用事件向用户提供有关滤镜或混合模式进度的一些指示。 CamanJS 有五个不同的事件,可用于在不同阶段执行特定的回调函数。这五个事件是 processStart
、processComplete
、renderFinished
、blockStarted
和 blockFinished
。
processStart
和 processComplete
事件在单个过滤器开始或完成其渲染过程后触发。当您指定的所有过滤器都已应用于图像时,库将触发 renderFinished
事件。
CamanJS 在开始操作之前将大图像分成块。 blockStarted
和 blockFinished
事件在库处理完图像的各个块后触发。
在我们的示例中,我们将仅使用 processStart
和 renderFinished
事件来通知用户图像编辑操作的进度。
Caman.Event.listen("processStart", function (process) { $(".process-message").text('Applying ' + process.name); }); Caman.Event.listen("renderFinished", function () { $(".process-message").text("Done!"); });
通过 processStart
和 processFinish
事件,您可以访问当前在图像上运行的进程的名称。另一方面,blockStarted
和 blockFinished
事件使您可以访问块总数、当前正在处理的块以及已完成块的数量等信息。
尝试单击下面演示中的任何按钮,您将在画布下方的区域中看到当前操作图像的进程的名称。
最终想法
本系列的第一个教程向您展示了如何使用 CamanJS 库中的内置滤镜创建基本图像编辑器。本教程向您展示了如何处理多个图层以及如何对每个图层单独应用不同的滤镜和混合模式。
由于大图像的图像编辑过程可能需要一段时间,因此我们还学习了如何向用户表明图像编辑器实际上正在处理图像而不是闲置。
在本系列的下一个也是最后一个教程中,您将学习如何在 CamanJS 中创建自己的混合模式和滤镜。如果您对本教程有任何疑问,请随时在评论中告诉我。
위 내용은 CamanJS를 사용하여 이미지 편집 도구 개발: 레이어 탐색, 혼합 모드 및 이벤트 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











기사는 JavaScript 라이브러리 작성, 게시 및 유지 관리, 계획, 개발, 테스트, 문서 및 홍보 전략에 중점을 둡니다.

이 기사는 브라우저에서 JavaScript 성능을 최적화하기위한 전략에 대해 설명하고 실행 시간을 줄이고 페이지로드 속도에 미치는 영향을 최소화하는 데 중점을 둡니다.

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

이 기사는 브라우저 개발자 도구를 사용하여 효과적인 JavaScript 디버깅, 중단 점 설정, 콘솔 사용 및 성능 분석에 중점을 둡니다.

이 기사는 Java의 컬렉션 프레임 워크의 효과적인 사용을 탐구합니다. 데이터 구조, 성능 요구 및 스레드 안전을 기반으로 적절한 컬렉션 (목록, 세트, 맵, 큐)을 선택하는 것을 강조합니다. 효율적인 수집 사용을 최적화합니다

이 기사는 소스 맵을 사용하여 원래 코드에 다시 매핑하여 미니어링 된 JavaScript를 디버그하는 방법을 설명합니다. 소스 맵 활성화, 브레이크 포인트 설정 및 Chrome Devtools 및 Webpack과 같은 도구 사용에 대해 설명합니다.

이 튜토리얼은 Chart.js를 사용하여 파이, 링 및 버블 차트를 만드는 방법을 설명합니다. 이전에는 차트 유형의 차트 유형을 배웠습니다. JS : 라인 차트 및 막대 차트 (자습서 2)와 레이더 차트 및 극지 지역 차트 (자습서 3)를 배웠습니다. 파이 및 링 차트를 만듭니다 파이 차트와 링 차트는 다른 부분으로 나뉘어 진 전체의 비율을 보여주는 데 이상적입니다. 예를 들어, 파이 차트는 사파리에서 남성 사자, 여성 사자 및 젊은 사자의 비율 또는 선거에서 다른 후보자가받는 투표율을 보여주는 데 사용될 수 있습니다. 파이 차트는 단일 매개 변수 또는 데이터 세트를 비교하는 데만 적합합니다. 파이 차트의 팬 각도는 데이터 포인트의 숫자 크기에 의존하기 때문에 원형 차트는 값이 0 인 엔티티를 그릴 수 없습니다. 이것은 비율이 0 인 모든 엔티티를 의미합니다

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.
