2012-02-23 18 views
21

Tôi rất cần tạo một CGContextRef WITHOUT một kênh alpha. Thật không may, với Core Graphics bạn KHÔNG THỂ chỉ định kCGImageAlphaNone với CGBitmapCreateContext.CGBitmapContextTạo bằng kCGImageAlphaNone

Có thể ai đó XIN đăng ví dụ làm việc về cách tôi có thể tạo CGContextRef KHÔNG CÓ kênh alpha không?

Lý do tôi cần điều này là vì cuối cùng tôi đang cố gắng gọi CGImageCreateWithMaskingColors, tất nhiên, sẽ KHÔNG hoạt động nếu CGImageRef được cung cấp có kênh alpha.

Vui lòng đăng ví dụ làm việc. Nếu bạn làm bạn có thể thưởng thức trong thực tế là bạn sẽ được trên các cạnh cắt và sẽ là người đầu tiên làm như vậy! Hãy đăng bài!

+0

Nếu bất cứ ai đang gặp vấn đề được đề cập trong liên kết sau đó hãy làm theo giải pháp của tôi: http://answers.opencv.org/question/12273/cgbitmapcontextcreate-invalid-data-bytesrow-error /? answer = 104865 # post-id-104865 Đây là sự cố liên quan – Spandan

Trả lời

52

Bạn có thể tạo ngữ cảnh bitmap không có kênh alpha. Bạn không thể tạo một bối cảnh bitmap với ba byte cho mỗi pixel. Dưới đây là những cái bắt tay bí mật:

CGContextRef gc = CGBitmapContextCreate(NULL, myWidth, myHeight, 8, myWidth * 4, 
    myColorSpace, kCGImageAlphaNoneSkipLast); 
+0

Cảm ơn, điều đó đã hiệu quả. Tin tưởng rằng nó hay không bạn là người đầu tiên để gửi một giải pháp bất cứ nơi nào trên mạng. Con đường để đi! – PleaseHelp