2012-07-13 34 views

Trả lời

14
CIFilter *yourFilter = [CIFilter filterWithName:@"CITemperatureAndTint"]; 
[yourFilter setValue:yourInputImage forKey:@"inputImage"]; 
[yourFilter setValue:[CIVector vectorWithX:6500 Y:500] forKey:@"inputNeutral"]; // Default value: [6500, 0] Identity: [6500, 0] 
[yourFilter setValue:[CIVector vectorWithX:1000 Y:630] forKey:@"inputTargetNeutral"]; // Default value: [6500, 0] Identity: [6500, 0] 
CIImage *resultImage = [yourFilter valueForKey: @"outputImage"]; 
UIImage *resultOutputImage = [UIImage imageWithCGImage:[context createCGImage:resultImage fromRect:resultImage.extent]];  

Bạn có thể xem giá trị nào cho nhiệt độ màu cho bạn màu nào trong this wikipedia link.

For Reference

CITemperatureAndTint có ba thông số đầu vào: Hình ảnh, Neutral và targetneurtral. Trung lập và TargetNeutral là loại 2D CIVector, và trong cả hai, lưu ý rằng kích thước đầu tiên đề cập đến Nhiệt độ và chiều thứ hai đề cập đến Tint. Những gì bộ lọc CITemperatureAndTint về cơ bản là tính toán một ma trận điều chỉnh giá trị RGB từ điểm trắng nguồn được xác định bởi Neutral (srcTemperature, srcTint) đến điểm trắng đích được xác định bởi TargetNeutral (dstTemperature, dstTint), và sau đó áp dụng ma trận này trên hình ảnh đầu vào (sử dụng bộ lọc CIColorMatrix). Nếu Neutral và TargetNeutral có cùng giá trị, thì hình ảnh sẽ không thay đổi sau khi áp dụng bộ lọc này. Tôi không biết chi tiết thực hiện về iPhoto, nhưng tôi nghĩ rằng hai thanh trượt cung cấp các thay đổi Nhiệt độ và Màu (tức là sự khác biệt giữa giá trị nhiệt độ nguồn và nhiệt độ mục tiêu và độ màu) mà bạn muốn thêm vào hình ảnh nguồn.

+0

Cảm ơn vì điều đó nhưng tôi vẫn không biết cách kiểm soát màu nhuộm. Ví dụ, tôi đã không tìm ra cách để nhuộm một hình ảnh màu xanh. –

-1

cũng không có ví dụ cụ thể được thực hiện cho CITemperatureAndTint nhưng bạn có thể lấy mã để chứng minh việc sử dụng NSImage làm đích vẽ ngoài màn hình.

URL cho mã số đó là https://developer.apple.com/library/mac/#samplecode/Tinted_Image/Introduction/Intro.html#//apple_ref/doc/uid/DTS10000412-Intro-DontLinkElementID_2

tôi chắc chắn bạn có thể sửa đổi nó để sử dụng CITemperatureAndTint hoặc sửa đổi các mã hiện có để đáp ứng nhu cầu của bạn.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan