gpt4 book ai didi

ios - 如何在 ios 中的 uiimage 上应用滤镜以去除阴影和灯光?

转载 作者:行者123 更新时间:2023-11-28 17:51:53 33 4
gpt4 key购买 nike

我想在 ios 中应用滤镜 uiimage 来去除阴影和灯光。我有下面的android代码。我需要它在 ios 中的等价物。

public static Bitmap changeBitmapContrastBrightness(Bitmap bmp, float contrast, float brightness)
{
ColorMatrix cm = new ColorMatrix(new float[]
{
contrast, 0, 0, 0, brightness,
0, contrast, 0, 0, brightness,
0, 0, contrast, 0, brightness,
0, 0, 0, 1, 0
});

Bitmap ret = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());

Canvas canvas = new Canvas(ret);

Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(bmp, 0, 0, paint);

return ret;
}

我使用了下面的 ios 代码,但无法得到正确的结果

CIImage *inputImage = [CIImage imageWithCGImage:[UIImage   imageNamed:@"facedetectionpic.jpg"].CGImage]; // 1
// Make the filter
CIFilter *colorMatrixFilter = [CIFilter filterWithName:@"CIColorMatrix"]; // 2
[colorMatrixFilter setDefaults]; // 3
[colorMatrixFilter setValue:inputImage forKey:kCIInputImageKey]; // 4
[colorMatrixFilter setValue:[CIVector vectorWithX:1 Y:1 Z:1 W:0] forKey:@"inputRVector"]; // 5
[colorMatrixFilter setValue:[CIVector vectorWithX:0 Y:1 Z:0 W:0] forKey:@"inputGVector"]; // 6
[colorMatrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:1 W:0] forKey:@"inputBVector"]; // 7
[colorMatrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:1] forKey:@"inputAVector"]; // 8

// Get the output image recipe
CIImage *outputImage = [colorMatrixFilter outputImage]; // 9

// Create the context and instruct CoreImage to draw the output image recipe into a CGImage
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; // 10

最佳答案

    -(void)fiterImage:(CIColor*)imgFirstColor:(CIColor*)imgSecondColor:(CIColor*)imgThirdColor:(CIColor*)imgForthColor
{
CIImage *rawImageData1;
//arrImagesTemp image array
rawImageData1 =[[CIImage alloc] initWithImage:[arrImagesTemp objectAtIndex:0]];

if (rawImageData1)
{
CIImage* outputImage = nil;

CIFilter* greenGenerator = [CIFilter filterWithName:@"CIConstantColorGenerator"];

[greenGenerator setValue:imgFirstColor forKey:@"inputColor"];
CIImage* greenImage = [greenGenerator valueForKey:@"outputImage"];

CIImage *rawImageData =[[CIImage alloc] initWithImage:[arrImagesTemp objectAtIndex:0]];
CIFilter* filter = [CIFilter filterWithName:@"CIMultiplyCompositing"];
[filter setValue:greenImage forKey:@"inputImage"];
[filter setValue:rawImageData forKey:@"inputBackgroundImage"];
outputImage = [filter valueForKey:@"outputImage"];

CIImage *filteredImageData = [filter valueForKey:@"outputImage"];

CIContext* context = [CIContext contextWithOptions:nil];
CGImageRef outputImageRef = [context createCGImage:filteredImageData fromRect:[filteredImageData extent]];
UIImage *modifiedPhoto = [UIImage imageWithCGImage:outputImageRef scale:1 orientation:UIImageOrientationUp];

}
}

关于ios - 如何在 ios 中的 uiimage 上应用滤镜以去除阴影和灯光?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30843355/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com