如何修复Core Image的CILanczosScaleTransform过滤器边框工件?

时间:2018-03-07 08:19:15

标签: ios image-processing core-graphics core-image lanczos

我想为iOS实现图像缩小算法。在阅读了核心图像 /** * Implements hook_block_info(). */ function custom_block_block_info() { $blocks = array(); $blocks['my_block'] = array( 'info' => t('My Custom Block'), 'status' => TRUE, 'region' => 'Content', 'visibility' => BLOCK_VISIBILITY_LISTED, 'pages' => 'user/*', ); return $blocks; } /** * Implements hook_block_view(). */ function custom_block_view($delta = '') { // The $delta parameter tells us which block is being requested. switch ($delta) { case 'my_block': // Create your block content here $block['subject'] = t('This is just a test block created programatically'); $block['content'] = _user_detail_list(); break; } return $block; } /** * Implements costome code we want to print(). */ function _user_detail_list(){ //enter your query and output in some variable $value = "<p>User Detail</p>" return $value; } 非常适合它之后,我通过以下方式实现了它:

CILanczosScaleTransform

它工作得很好,但我得到了一个经典的边框神器可能是由于算法的像素邻域基础。我在Apple的文档中找不到任何关于此事的内容。 是否有比渲染更大图像更聪明的东西然后裁剪边框以解决此问题?

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用imageByClampingToExtent

  

调用此方法...通过重复创建无限范围的图像   来自原始图像边缘的像素颜色。

您可以像这样使用它:

...
guard let ciImage = CIImage(image: image)?.clampedToExtent() else {
    fatalError("Couldn't create CIImage from image in input")
}

在此处查看更多信息:Apple Doc for clampedtoextent