수색…


소개

이 항목에서는 비트 맵 데이터 및 시각적 처리, 픽셀 작업 및 효과 필터 시작에 대해 조금 배우게됩니다.

임계 값 (단색) 효과


필수 :

  1. 비트 맵 및 비트 맵 데이터 이해

문턱 값이란?

이 조정은 이미지의 모든 픽셀을 가져 와서 순수한 흰색 또는 순수한 검정색으로 푸시합니다.

우리가해야 할 일

여기 UI를 사용하여 런타임에서 임계 값 레벨 변경과 같은 몇 가지 추가 변경 사항이있는이 예제의 라이브 데모 가 있습니다.

여기에 이미지 설명을 입력하십시오.

작업 스크립트 3의 임계 값 as3 공식 문서

지정된 임계 값에 대해 이미지의 픽셀 값을 테스트하고 테스트를 통과 한 픽셀을 새 색상 값으로 설정합니다. threshold () 메서드를 사용하면 이미지의 색상 범위를 격리 및 대체하고 이미지 픽셀에 대해 다른 논리 연산을 수행 할 수 있습니다.

threshold () 메소드의 테스트 로직은 다음과 같습니다.

  1. ((pixelValue & mask) 연산 (threshold & mask)이면 픽셀을 color로 설정하십시오.
  2. 그렇지 않은 경우, copySource == true의 경우, 픽셀을 sourceBitmap의 대응하는 픽셀 치로 설정합니다.

방금 인용 된 설명과 같이 정확하게 다음 코드를 주석 처리했습니다.

import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd:BitmapData = new wildcat(); // instantied a bitmapdata from library a wildcat
var bmp:Bitmap = new Bitmap(bmd); // our display object to previewing bitmapdata on stage
addChild(bmp);
monochrome(bmd); // invoking threshold function

/**
    @param bmd, input bitmapData that should be monochromed
*/
function monochrome(bmd:BitmapData):void {
    var bmd_copy:BitmapData = bmd.clone(); // holding a pure copy of bitmapdata for comparation steps
    // this is our "threshold" in description above, source pixels will be compared with this value
    var level:uint = 0xFFAAAAAA; // #AARRGGBB. in this case i used RGB(170,170,170) with an alpha of 1. its not median but standard
    // A rectangle that defines the area of the source image to use as input.
    var rect:Rectangle = new Rectangle(0,0,bmd.width,bmd.height);
    // The point within the destination image (the current BitmapData instance) that corresponds to the upper-left corner of the source rectangle.
    var dest:Point = new Point();
    // thresholding will be done in two section
    // the last argument is "mask", which exists in both sides of comparation
    // first, modifying pixels which passed comparation and setting them all with "color" white (0xFFFFFFFF)
    bmd.bitmapData.threshold(bmd_copy, rect, dest, ">", level, 0xFFFFFFFF, 0xFFFFFFFF);
    // then, remaining pixels and make them all with "color" black (0xFF000000)
    bmd.bitmapData.threshold(bmd_copy, rect, dest, "<=", level, 0xFF000000, 0xFFFFFFFF);
    // Note: as we have no alpha channel in our default BitmapData (pixelValue), we left it to its full value, a white mask (0xffffffff)
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow