見つけた
既存の UIImage に影を追加して新しい UIImage を作成する
と
UIImage、暗くする、またはすべて黒にする簡単な方法はありますか
しかし、選択した回答は私にはうまくいきません。
透明なピクセルが含まれている可能性のある UIImage があります。不透明なピクセルを暗くして新しい UIImage を作成する必要があります。これを行う方法はありますか? UIBezierPath を使用することを考えていましたが、透明でないピクセルに対してのみ行う方法がわかりません。
見つけた
既存の UIImage に影を追加して新しい UIImage を作成する
と
UIImage、暗くする、またはすべて黒にする簡単な方法はありますか
しかし、選択した回答は私にはうまくいきません。
透明なピクセルが含まれている可能性のある UIImage があります。不透明なピクセルを暗くして新しい UIImage を作成する必要があります。これを行う方法はありますか? UIBezierPath を使用することを考えていましたが、透明でないピクセルに対してのみ行う方法がわかりません。
これは、透明であっても画像に色を付けるために使用するクラスです。
+ (UIImage *)colorizeImage:(UIImage *)image withColor:(UIColor *)color {
UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect area = CGRectMake(0, 0, image.size.width, image.size.height);
CGContextScaleCTM(context, 1, -1);
CGContextTranslateCTM(context, 0, -area.size.height);
CGContextSaveGState(context);
CGContextClipToMask(context, area, image.CGImage);
[color set];
CGContextFillRect(context, area);
CGContextRestoreGState(context);
CGContextSetBlendMode(context, kCGBlendModeMultiply);
CGContextDrawImage(context, area, image.CGImage);
UIImage *colorizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return colorizedImage;
}
画像を暗くするには、透明度を下げた黒またはグレーの UIColor をメソッドに渡します。
CoreImage Filter を試してみませんか?
CIColorControls フィルターを使用して入力の明るさとコントラストを調整し、画像を暗くすることができます。
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *inputImage = [[CIImage alloc] initWithImage:sourceImage]; //your input image
CIFilter *filter= [CIFilter filterWithName:@"CIColorControls"];
[filter setValue:inputImage forKey:@"inputImage"];
[filter setValue:[NSNumber numberWithFloat:0.5] forKey:@"inputBrightness"];
// Your output image
UIImage *outputImage = [UIImage imageWithCGImage:[context createCGImage:filter.outputImage fromRect:filter.outputImage.extent]];
CIFilter パラメータの詳細については、次を参照してください。
これは、CIExposureAdjust CIFilter を使用した簡単な Swift バージョンです:)
// Get the original image and set up the CIExposureAdjust filter
guard let originalImage = UIImage(named: "myImage"),
let inputImage = CIImage(image: originalImage),
let filter = CIFilter(name: "CIExposureAdjust") else { return }
// The inputEV value on the CIFilter adjusts exposure (negative values darken, positive values brighten)
filter.setValue(inputImage, forKey: "inputImage")
filter.setValue(-2.0, forKey: "inputEV")
// Break early if the filter was not a success (.outputImage is optional in Swift)
guard let filteredImage = filter.outputImage else { return }
let context = CIContext(options: nil)
let outputImage = UIImage(CGImage: context.createCGImage(filteredImage, fromRect: filteredImage.extent))
myImageView.image = outputImage // use the filtered UIImage as required.