【问题标题】:Jagged edges on images when rotating them旋转图像时图像边缘呈锯齿状
【发布时间】:2010-11-09 23:13:37
【问题描述】:

我有一个黑色背景的方形白色图像。当我旋转图像时,边缘变得非常锯齿状。它真的不好看。是否有任何设置可用于让手机在操作图像时平滑图像?或者是唯一真正的选择是要求艺术家使用一些艺术家技术,如抗锯齿(不知道这是否是正确的术语)或其他什么?我在文档中看到了 minificationFilter for scaling.. 也许有这样的东西可能适合我在文档中还没有找到的问题。有什么提示吗?

非常感谢, -代码

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    要为您的图像添加 1px 透明边框,请使用此

        CGRect imageRrect = CGRectMake(0, 0, image.size.width, image.size.height);
        UIGraphicsBeginImageContext( imageRrect.size ); 
        [image drawInRect:CGRectMake(1,1,image.size.width-2,image.size.height-2)];
        image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    

    【讨论】:

      【解决方案2】:

      如果您手头没有 iOS 4 / openGL,那么有一个 hack 几乎同样有效。在所有图像周围留一个 1 像素的透明边框 - 透明边框是锯齿状的,但你无法分辨,因为它是透明的。图像的内部应该看起来很光滑:)

      虽然很明显,这只有在您可以访问原始图像的情况下才能轻松工作。否则,您必须加载图像,将其渲染到带有边框的图形上下文中并使用新图像:(如果您有原件/可以访问设计师,只需告诉他/她添加 1px 透明边框,您当前的代码应该'只是工作'

      【讨论】:

      • 真的吗?全透明还是半透明?我想一些不可见的像素不会有所作为,因为白色像素仍然存在于不可见像素旁边。就像不一样,除了不可见的像素现在不在图像中;)这是一个有趣的理论,院长;)
      • 完全透明。从字面上看,图像周围有一个 1px 的边框,alpha 为 0。当您旋转图像时,只有边框没有抗锯齿 - 图像中的内部像素很好地混合。这意味着透明像素看起来很糟糕,但是嘿,它们是透明的,所以我们看不到它们。图像的可见边缘与透明边框抗锯齿,所以我们得到一个抗锯齿的边缘。试试看;)
      • 这项技术在 WWDC 2011 演示文稿中被推荐(我忘记了)。
      • 酷!知道我至少在做正确的事情总是很高兴:)
      • 我在保存从 showCamera 获得的图像时使用 event.media.imageWithTransparentBorder(1) 尝试了此操作。我可以看到它有一个透明的边框,但图像的边缘仍然是锯齿状的。有人成功使用过 imageWithTransparentBorder 吗?
      猜你喜欢
      • 2017-02-22
      • 2019-04-30
      • 2011-06-06
      • 2016-05-10
      • 1970-01-01
      • 2019-07-22
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多