iOS和Android算法或库,用于像photoshop';s

iOS和Android算法或库,用于像photoshop';s,android,ios,algorithm,image-processing,Android,Ios,Algorithm,Image Processing,我正在寻找iOS和Android库(最好是)或算法,可以帮助我像在Photoshop中一样处理图像的边缘。下图显示了算法的预期效果。我对图像的羽化边界不感兴趣,只对alpha边感兴趣。我一直在寻找能在几天内不走运地完成它的算法。任何帮助都将不胜感激 假设你有alpha通道(就像在透明背景的照片上一样),那么常规的convulion模糊矩阵应该会让你满意 但是,不要通过RGB通道-您应该只通过ALPHA通道 在此处检查模糊过滤器: 您对框模糊/高斯模糊感兴趣。然而,为了使这种效果更平滑,你应该使

我正在寻找iOS和Android库(最好是)或算法,可以帮助我像在Photoshop中一样处理图像的边缘。下图显示了算法的预期效果。我对图像的羽化边界不感兴趣,只对alpha边感兴趣。我一直在寻找能在几天内不走运地完成它的算法。任何帮助都将不胜感激


假设你有alpha通道(就像在透明背景的照片上一样),那么常规的convulion模糊矩阵应该会让你满意

但是,不要通过RGB通道-您应该只通过ALPHA通道

在此处检查模糊过滤器:

您对框模糊/高斯模糊感兴趣。然而,为了使这种效果更平滑,你应该使用更大尺寸的矩阵

该算法能够满足您的需求的原因是,如果周围的所有像素都有alpha 0,那么它仍然是0。如果是255,它将保持255。只影响alpha 0/255之间边界区域中的像素

编辑:

请用chrome检查这把小提琴(在ff中非常慢):

您可以在代码末尾查看算法。自实施以来,我注意到: -如果所有相邻像素为255或0(alpha通道),则无需模糊 -在其他情况下也需要模糊RGB

一般而言:

RADIUS = 2 (makes total width of matrix = 5)
For x = 0..width
  for y = 0..width
    if all pixels in square of radius 2 are alpha = 0
      do nothing
    elsif all pixels in square have alpha = 255
      do nothing
    else
      pixel[x][y].RGB = average RGB of adjacent pixels where alpha != 0
      pixel[x][y].ALPHA = average ALPHA in square
半径为2的示例结果

当然,这是一个相当概念化的程序,有很多地方可以用来记忆和调整这个脚本,但是它应该让一个大的图景变得清晰


您可以根据视图的背景色更改边框的alpha

var r:Float!
var g:Float!
var b:Float!
var a:Float!

if self.view.backgroundColor.getRed(red:r, green:g, blue:b, alpha:a) {
  var imgv = UIImageView(frame: CGRect(x:100, y:100, width:100, height:100))
  imgv.image = UIImage(named:"name")
  imgv.layer.borderWidth = 2.0
  imgv.layer.borderColor = UIColor(red:r, green:g, blue:b, alpha:0.5).CGColor
  imgv.layer.cornerRadius = imgv.frame.size.width / 2
  imgv.clipsToBounds = true
}else{
   //Could not get the RGB of background color
}

您可能会看到此代码中的错误,因为我尚未对其进行测试。

如果您详细说明您的答案,或者提供一个简短的示例说明我应该如何执行此操作,我将很乐意为您提供奖励。您知道如何使用核心图像执行此操作吗?它不会将边框应用于图像的边缘,只是图像视图的框架。是否要更改图像本身而不是显示它的容器?“我对图像的羽化边界不感兴趣,只对alpha边感兴趣。”查看我的代码,它将羽化任何形状的UIImage.:)