gpt4 book ai didi

iphone - 通过向现有 UIImage 添加阴影来创建新的 UIImage

转载 作者:太空狗 更新时间:2023-10-30 03:24:53 29 4
gpt4 key购买 nike

我看过这个问题:UIImage Shadow Trouble

但接受的答案对我不起作用。

我想做的是获取一个 UIImage 并向其添加阴影,然后返回一个全新的 UIImage、阴影和所有内容。

这就是我正在尝试的:

- (UIImage*)imageWithShadow {

CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef shadowContext = CGBitmapContextCreate(NULL, self.size.width, self.size.height + 1, CGImageGetBitsPerComponent(self.CGImage), 0,
colourSpace, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colourSpace);

CGContextSetShadow(shadowContext, CGSizeMake(0, -1), 1);
CGContextDrawImage(shadowContext, CGRectMake(0, 0, self.size.width, self.size.height), self.CGImage);

CGImageRef shadowedCGImage = CGBitmapContextCreateImage(shadowContext);
CGContextRelease(shadowContext);

UIImage * shadowedImage = [UIImage imageWithCGImage:shadowedCGImage];
CGImageRelease(shadowedCGImage);

return shadowedImage;
}

结果是我得到的图像与我通过此方法放入之前完全相同。

我这样做的方式是正确的,还是我遗漏了什么明显的东西?

最佳答案

你的代码有几个问题:

  • 目标图像太小。确保有足够的地方画阴影。
  • 考虑使用 CGContextSetShadowWithColor 来定义阴影及其颜色。
  • 不要忘记坐标系是翻转的,所以原点是左下角,而不是左上角。

通过解决这些问题,应该绘制阴影。

- (UIImage*)imageWithShadow {
CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef shadowContext = CGBitmapContextCreate(NULL, self.size.width + 10, self.size.height + 10, CGImageGetBitsPerComponent(self.CGImage), 0,
colourSpace, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colourSpace);

CGContextSetShadowWithColor(shadowContext, CGSizeMake(5, -5), 5, [UIColor blackColor].CGColor);
CGContextDrawImage(shadowContext, CGRectMake(0, 10, self.size.width, self.size.height), self.CGImage);

CGImageRef shadowedCGImage = CGBitmapContextCreateImage(shadowContext);
CGContextRelease(shadowContext);

UIImage * shadowedImage = [UIImage imageWithCGImage:shadowedCGImage];
CGImageRelease(shadowedCGImage);

return shadowedImage;
}

关于iphone - 通过向现有 UIImage 添加阴影来创建新的 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2936443/

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