불투명도를 변경해야하는 알파 미리 곱하기 이미지가 있습니다. 이미지에 적용되는 불투명도 변경은 0.0에서 1.0까지입니다.
이 프로세스는 다음 공식을 사용하여 쉽게 달성 할 수 있습니다.
Cn = C*alpha;
An = A*alpha;
그러나 나는이 코드를 직접 작성하는 것을 피하고 고도로 최적화 된 라이브러리 pixman이 작업을 수행하도록 허용하려고합니다. 다양한 블렌딩 옵션을 제공하지만 마스크를 사용하는 방법이나 사용할 블렌딩 옵션을 잘 모르겠습니다. 나는 MULTIPLY를 사용해 보았지만 예상대로 이미지를 어둡게 만들었습니다 ...
어떤 잠재적 블렌드 옵션을 사용해야하는지 아이디어가 있습니까?
{ "CLEAR", PIXMAN_OP_CLEAR },
{ "SRC", PIXMAN_OP_SRC },
{ "DST", PIXMAN_OP_DST },
{ "OVER", PIXMAN_OP_OVER },
{ "OVER_REVERSE", PIXMAN_OP_OVER_REVERSE },
{ "IN", PIXMAN_OP_IN },
{ "IN_REVERSE", PIXMAN_OP_IN_REVERSE },
{ "OUT", PIXMAN_OP_OUT },
{ "OUT_REVERSE", PIXMAN_OP_OUT_REVERSE },
{ "ATOP", PIXMAN_OP_ATOP },
{ "ATOP_REVERSE", PIXMAN_OP_ATOP_REVERSE },
{ "XOR", PIXMAN_OP_XOR },
{ "ADD", PIXMAN_OP_ADD },
{ "SATURATE", PIXMAN_OP_SATURATE },
{ "MULTIPLY", PIXMAN_OP_MULTIPLY },
{ "SCREEN", PIXMAN_OP_SCREEN },
{ "OVERLAY", PIXMAN_OP_OVERLAY },
{ "DARKEN", PIXMAN_OP_DARKEN },
{ "LIGHTEN", PIXMAN_OP_LIGHTEN },
{ "COLOR_DODGE", PIXMAN_OP_COLOR_DODGE },
{ "COLOR_BURN", PIXMAN_OP_COLOR_BURN },
{ "HARD_LIGHT", PIXMAN_OP_HARD_LIGHT },
{ "SOFT_LIGHT", PIXMAN_OP_SOFT_LIGHT },
{ "DIFFERENCE", PIXMAN_OP_DIFFERENCE },
{ "EXCLUSION", PIXMAN_OP_EXCLUSION },
{ "HSL_HUE", PIXMAN_OP_HSL_HUE },
{ "HSL_SATURATION", PIXMAN_OP_HSL_SATURATION },
{ "HSL_COLOR", PIXMAN_OP_HSL_COLOR },
{ "HSL_LUMINOSITY", PIXMAN_OP_HSL_LUMINOSITY },
이것은 실제 복합 함수입니다.
void pixman_image_composite(pixman_op_t op,
pixman_image_t *src,
pixman_image_t *mask,
pixman_image_t *dest,
int16_t src_x,
int16_t src_y,
int16_t mask_x,
int16_t mask_y,
int16_t dest_x,
int16_t dest_y,
uint16_t width,
uint16_t height);
해결책은 실제로 상당히 쉬웠습니다. 처음에는 마스크에 대해 너무 많이 생각하지 않았습니다. 그런 다음 나는 포토샵에서 사용하는 것처럼 당연히 마스크를 깨달았습니다.
따라서 올바른 알파 값으로 마스크를 적용하면 이미지의 불투명도가 변경됩니다.
따라서 이미지 불투명도를 50 %로 변경하면 흰색과 알파 값이 50 % 인 마스크를 사용합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다