【问题标题】:How to pixelate an image in iOS?如何在 iOS 中像素化图像?
【发布时间】:2014-09-04 13:25:06
【问题描述】:

我要创建一个具有以下功能的简单应用:

  1. 应用程序的第一页将显示来自服务器的图像列表(当我们显示这些图像时,我们应该对其进行像素化)。

  2. 一旦用户点击任何像素化图像,它将打开详细视图(在新的 ViewController 中打开该像素化图像)。

当用户在细节视图控制器图像上进行单点触摸时,它会降低它的像素化水平,并且在一些点击之后用户可以看到真实的图像。

我的问题是我无法找到动态像素化所有这些东西的方法。请帮帮我。

【问题讨论】:

  • 我认为你可以使用 UIImageJPEGRepresentation(image, compressibility) 压缩越低质量越高。所以我的建议是采用 4 个 UIImages 并将压缩率从 1 降低到 0.2 并存储它们。当用户第一次点击时显示压缩率为 0.2 的图像,当他再次点击时通过降低质量等方式显示压缩率为 0.4 的图像。如果你想反转方法
  • 嗨,你有任何示例代码或链接吗?
  • 好的让我试试谢谢
  • @sreekanthk 你能再次发布你的答案吗

标签: ios objective-c uiimage pixelate


【解决方案1】:

GPUImage Framework 具有像素化过滤器,因为它使用 GPUAcceleration 对图像应用过滤器非常快,并且您可以在运行时改变像素化级别。

UIImage *inputImage = [UIImage imageNamed:<#yourimageame#>];
GPUImagePixellateFilter *filter = [[GPUImagePixellateFilter alloc] init];
UIImage *filteredImage = [filter imageByFilteringImage:inputImage];

【讨论】:

  • 我已经这样做了,但是我遇到了一些错误,请查看此链接以获取屏幕截图postimg.org/image/6vq9ovyu5/7d68104f
  • 必须按照github页面上的说明导入框架
  • 你可以创建一个示例示例吗.. 我试过了,它显示错误
  • 你必须使用 GPUImagePicture 而不是 UIImage。见这里:GPUImagePicture *mainCurrentImg = [[GPUImagePicture alloc] initWithImage: inputImage];
  • 这是否可以在图像上使用 PanGesture 进行像素化...?意思是说特定的像素..
【解决方案2】:

像素化图像的一种简单方法是使用 Core Image 中的 CIPixellate 过滤器。

可以在Core Image Programming Guide 中找到使用 Core Image 过滤器处理图像的说明和示例代码。

【讨论】:

  • 这很漂亮。我很惊讶(也很尴尬)我以前从未听说过。
  • 对不起,我没有在该文档中看到任何像素化
  • @Donkrisnp 链接页面清单 1-1 中的示例显示了使用 CISepiaTone 进行过滤,但这只是为了说明该过程。您可以轻松修改代码以使用不同的过滤器(如CIPixellate)并根据您选择的过滤器的文档为任何合适的键设置值。
  • @n00bProgrammer Core Image 非常流畅。 Brad Larson 的 GPUImage 在某些方面更加流畅(更快、更简单),但它是您必须添加到项目中的其他内容。对于 OP 而言,任何一个都可能适合。
【解决方案3】:

UIImage *yourImage = [UIImage imageNamed:@"yourimage"]; NSData *imageData1 = UIImageJPEGRepresentation(yourImage, 0.2); NSData *imageData2 = UIImageJPEGRepresentation(yourImage, 0.3);

以此类推

NSData *imageDataN = UIImageJPEGRepresentation(yourImage, 1);

在下面的帮助下显示 imageData:

UIImage *compressedImage = [UIImage imageWithData:imageData1];

试试这个。快乐编码

【讨论】:

  • 这是一个繁重的操作,不是吗?
  • 不,它一个简单的块可能最多 20 行编码
猜你喜欢
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 2013-12-23
  • 2020-09-27
相关资源
最近更新 更多