MonoTouch를 사용하여 사용자 지정 이미지 필터 만들기

신비

iOS 용 Xamarin을 사용하여 즉석에서 합성 이미지를 만드는 중입니다. 두 개의 이미지가 있는데 하나는 기본 이미지 (흑백)이고 다른 하나는 컬러 필터의 알파 마스크 '맵'입니다. 그런 다음 런타임에 RGB 값을 제공하여 합성 이미지를 원하는 색상으로 만들 수 있습니다.

전체 이미지를 변경하기위한 많은 솔루션을 찾았지만 마스크 맵에 포함 된 영역 (알파 값 포함)에만 색상을 지정하는 색상 필터를 만드는 데 좋은 솔루션을 찾는 데 어려움이 있습니다.

기본 이미지 :

여기에 이미지 설명 입력 여기에 이미지 설명 입력

결과 이미지 (빨간색을 원한다고 말하면) :

여기에 이미지 설명 입력

MonoDroid에서 사용자 지정 ImageView를 만들고 OnDraw 메서드를 재정의 한 다음 매력처럼 작동하는 ColorMatrixColorFilter를 사용했지만 MonoTouch에서 동일한 작업을 수행하는 방법을 모릅니다.

이것이 내가 MonoDroid를 위해 한 일입니다.

    protected override void OnDraw(Canvas canvas)
    {
        if (_alphaMask == null)
            _alphaMask = BitmapFactory.DecodeResource(Resources, GetDrawable("star_mask"));

        if(_image == null)
            _image = BitmapFactory.DecodeResource(Resources, GetDrawable("star"));

        AdjustColor(_color, canvas, _alphaMask, _image);
    }

    private static void AdjustColor(Color color, Canvas c, Bitmap alphaMask, Bitmap image)
    {
        float R = color.R;
        float G = color.G;
        float B = color.B;
        var maskPaint = new Paint();
        var mat = new[]
        {
            0, 0, 0, 0, R, //red
            0, 0, 0, 0, G, //green
            0, 0, 0, 0, B, //blue
            0, 0, 0, 1, 0  //alpha
        };
        ColorMatrix cm = new ColorMatrix(mat);
        maskPaint.SetColorFilter(new ColorMatrixColorFilter(cm));
        c.DrawBitmap(image, 0, 0, null);
        c.DrawBitmap(alphaMask, 0, 0, maskPaint);
    }
신비

좋아 ... 가장 우아한 솔루션은 아니지만 두 개 ImageView를 겹쳐서 만들었습니다 .

기본 이미지 위에 MaskView다음 방법을 사용하여 색상을 만들었습니다 UIImage.

private UIImage GetColoredImage(string imageName, Color color)
    {
        UIImage image = UIImage.FromBundle(imageName);

        UIGraphics.BeginImageContext(image.Size);
        CGContext context = UIGraphics.GetCurrentContext();

        context.TranslateCTM(0, image.Size.Height);
        context.ScaleCTM(1.0f, -1.0f);

        var rect = new RectangleF(0, 0, image.Size.Width, image.Size.Height);

        // draw image, (to get transparancy mask)
        context.SetBlendMode(CGBlendMode.Normal);
        context.DrawImage(rect, image.CGImage);

        // draw the color using the sourcein blend mode so its only draw on the non-transparent pixels
        context.SetBlendMode(CGBlendMode.SourceIn);
        context.SetFillColor(color.R / 255f, color.G / 255f, color.B / 255f, 1);
        context.FillRect(rect);

        UIImage coloredImage = UIGraphics.GetImageFromCurrentImageContext();
        UIGraphics.EndImageContext();
        return coloredImage;
    }

누군가가 더 나은 해결책을 가지고 있다면 (어쩌면을 사용 CIFilter하고있을 것입니다) 나는 그것을보고 싶습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

부울 논리를 사용하여 사용자 지정 필터를 만들기위한 웹 양식

분류에서Dev

CollectionView를 사용하여 사용자 지정 Tabbar 만들기

분류에서Dev

개체를 반환하는 사용자 지정 Angular 필터 만들기

분류에서Dev

Parler를 사용하여 Django 관리 인터페이스에서 사용자 지정 양식 만들기

분류에서Dev

jQuery를 사용하여 사용자 지정 범위 슬라이더 만들기

분류에서Dev

개인 이미지를 사용하여 SwiftUI 버튼 만들기

분류에서Dev

PHP 및 JavaScript를 사용하여 모달 이미지 만들기

분류에서Dev

jQuery를 사용하여 이미지 퍼즐 게임 만들기

분류에서Dev

javacv를 사용하여 흰색 이미지 만들기

분류에서Dev

CSS를 사용하여 이미지 갤러리 만들기

분류에서Dev

사용자 지정 Json Deserializer를 사용하여 새 개체 만들기

분류에서Dev

VBA를 사용하여 사용자 지정 SUM 함수 만들기

분류에서Dev

Bootstrap 5를 사용하여 사용자 지정 도구 설명 만들기

분류에서Dev

Spring Quartz를 사용하여 사용자 지정 스케줄러 만들기

분류에서Dev

CSS를 사용하여 사용자 지정 화살표 모양 만들기

분류에서Dev

CSS를 사용하여 사용자 지정 화살표 모양 만들기

분류에서Dev

변수를 사용하여 사용자 지정 출력 만들기

분류에서Dev

매크로를 사용하여 사용자 지정 블록 유형 만들기

분류에서Dev

React JS를 사용하여 사용자 지정 라디오 버튼 만들기

분류에서Dev

vba를 사용하여 데이터에 대한 자동 필터 만들기

분류에서Dev

추천 이미지를 포함하여 사용자 지정 최신 우편 단축 코드 만들기

분류에서Dev

C # Winforms를 사용하여 사용자 지정 사용자 정의 컨트롤의 속성 만들기

분류에서Dev

ActionBuilder를 사용하여 사용자 지정 Action을 만들 때 Guice 사용

분류에서Dev

C #을 사용하여 사용자 지정 UserControl 만들기

분류에서Dev

tableView 및 textField를 사용하여 프로필 페이지 만들기

분류에서Dev

사용자 지정 함수를 사용하여 Hasura에서 계산 된 필드를 만들려고합니다.

분류에서Dev

Razor보기를 사용하여 ASP.Net MVC3에서 사용자 지정 레이아웃 만들기

분류에서Dev

SpringData Elasticsearch에서 asciifolding 필터로 사용자 지정 분석기 만들기

분류에서Dev

추가 방법 drupal 7보기에서 사용자 지정 필터 만들기

Related 관련 기사

  1. 1

    부울 논리를 사용하여 사용자 지정 필터를 만들기위한 웹 양식

  2. 2

    CollectionView를 사용하여 사용자 지정 Tabbar 만들기

  3. 3

    개체를 반환하는 사용자 지정 Angular 필터 만들기

  4. 4

    Parler를 사용하여 Django 관리 인터페이스에서 사용자 지정 양식 만들기

  5. 5

    jQuery를 사용하여 사용자 지정 범위 슬라이더 만들기

  6. 6

    개인 이미지를 사용하여 SwiftUI 버튼 만들기

  7. 7

    PHP 및 JavaScript를 사용하여 모달 이미지 만들기

  8. 8

    jQuery를 사용하여 이미지 퍼즐 게임 만들기

  9. 9

    javacv를 사용하여 흰색 이미지 만들기

  10. 10

    CSS를 사용하여 이미지 갤러리 만들기

  11. 11

    사용자 지정 Json Deserializer를 사용하여 새 개체 만들기

  12. 12

    VBA를 사용하여 사용자 지정 SUM 함수 만들기

  13. 13

    Bootstrap 5를 사용하여 사용자 지정 도구 설명 만들기

  14. 14

    Spring Quartz를 사용하여 사용자 지정 스케줄러 만들기

  15. 15

    CSS를 사용하여 사용자 지정 화살표 모양 만들기

  16. 16

    CSS를 사용하여 사용자 지정 화살표 모양 만들기

  17. 17

    변수를 사용하여 사용자 지정 출력 만들기

  18. 18

    매크로를 사용하여 사용자 지정 블록 유형 만들기

  19. 19

    React JS를 사용하여 사용자 지정 라디오 버튼 만들기

  20. 20

    vba를 사용하여 데이터에 대한 자동 필터 만들기

  21. 21

    추천 이미지를 포함하여 사용자 지정 최신 우편 단축 코드 만들기

  22. 22

    C # Winforms를 사용하여 사용자 지정 사용자 정의 컨트롤의 속성 만들기

  23. 23

    ActionBuilder를 사용하여 사용자 지정 Action을 만들 때 Guice 사용

  24. 24

    C #을 사용하여 사용자 지정 UserControl 만들기

  25. 25

    tableView 및 textField를 사용하여 프로필 페이지 만들기

  26. 26

    사용자 지정 함수를 사용하여 Hasura에서 계산 된 필드를 만들려고합니다.

  27. 27

    Razor보기를 사용하여 ASP.Net MVC3에서 사용자 지정 레이아웃 만들기

  28. 28

    SpringData Elasticsearch에서 asciifolding 필터로 사용자 지정 분석기 만들기

  29. 29

    추가 방법 drupal 7보기에서 사용자 지정 필터 만들기

뜨겁다태그

보관