美文网首页
图片分割的代码

图片分割的代码

作者: 杂货铺学徒 | 来源:发表于2019-05-29 14:44 被阅读0次

/*

 +(NSDictionary*)SeparateImage:(UIImage*)image ByX:(int)x andY:(int)y cacheQuality:(float)quality;
 
 方法说明:
 NSDictionary *:返回字典,UIImageView格式,不仅含有 Image 还含有 Rect。
 image: 图片资源,要求为UIImage格式。x: y:分别表示要切成几行和列,最小值为1。
 quality:处理后保存的小图片的质量。(0,1]有效,小于或为0不保存,大于1时会被强强制为1。
 切割后的小图片保存位置为 Homedirectory, 可以通过 nslog(@"%@",NSHomedirectory()); 查出。
 
 用途:
 适合图片处理应用里为图片添加百叶窗效果,或者拼图游戏里...
 
 */

+(NSDictionary*)SeparateImage:(UIImage*)image ByX:(int)x andY:(int)y cacheQuality:(float)quality
{
    //kill errors
    if (x<1) {
        NSLog(@"illegal x!");
        return nil;
    }else if (y<1) {
        NSLog(@"illegal y!");
        return nil;
    }
    
    if (![image isKindOfClass:[UIImage class]]) {
        NSLog(@"illegal image format!");
        return nil;
    }
    
    //attributes of element
    float _xstep=image.size.width*1.0/(y+1);
    float _ystep=image.size.height*1.0/(x+1);
    
    NSMutableDictionary*_mutableDictionary = [[NSMutableDictionary alloc]initWithCapacity:1];
    
    //NSArray*_array=[imageName componentsSeparatedByString:@"."];
    
    //NSString*prefixName=[_array objectAtIndex:0];
    
    NSString*prefixName=@"win";
    
    //snap in context and create element image view
    for (int i=0; i<x; i++)
    {
        for (int j=0; j<y; j++)
        {
            CGRect rect=CGRectMake(_xstep*j, _ystep*i, _xstep, _ystep);
            
            CGImageRef imageRef=CGImageCreateWithImageInRect([image CGImage],rect);
           
            UIImage* elementImage=[UIImage imageWithCGImage:imageRef];
            
            UIImageView*_imageView=[[UIImageView alloc] initWithImage:elementImage];
            
            _imageView.frame=rect;
            
            NSString*_imageString=[NSString stringWithFormat:@"%@_%d_%d.jpg",prefixName,i,j];
            
            [_mutableDictionary setObject:_imageView forKey:_imageString];
            
            //CFRelease(imageRef);
            
            if (quality<=0)
            {
                continue;
            }
            
            quality=(quality>1)?1:quality;
            
            NSString*_imagePath=[NSHomeDirectory() stringByAppendingPathComponent:_imageString];
           
            NSData* _imageData=UIImageJPEGRepresentation(elementImage, quality);
            
            [_imageData writeToFile:_imagePath atomically:NO];
            
        }
        
    }
    
    //return dictionary including image views
    NSDictionary*_dictionary=_mutableDictionary;
    return _dictionary;
    
}

相关文章

  • 图片分割的代码

  • 简书 Markdown

    标题 代码 分割线 引用 排序 链接 强调 表格 图片

  • 「PPT疗程」 形状填充图片

    图片被形状分割的效果 今天分享的这个技巧是利用形状的填充,达到图片连续分割的效果,并且不需要真的去分割图片(分割图...

  • 代码分割

    代码分割:当两个文件同时引用同一个模块时时,将其抽取出来官方例子 懒加载(动态加载):通过某个条件动态加载js文件...

  • 13.webpack CodeSpliting

    代码分割的原理是splitChunks进行分割的,且chunks:async只对异步代码分割,chunks可选择为...

  • markdown 常用语法回顾

    几级标题 加粗斜体斜体加粗删除 引用 代码行 code代码块 分割线 图片 表格 姓名技能排行刘备哭大哥关羽打二哥...

  • opencv3+python3.5成语填字游戏(二)填字图片汉字

    GitHub源代码 上一篇说的是汉字的分割。今天该实际填字图片的解析了。实际图片如下: 这是一个10*10的方格,...

  • 2020-12-02 CSS 文件的代码分割(4.92)

    之前总结的代码分割都是针对JS代码的,如果要对CSS代码进行代码分割,要怎么办呢?借助MiniCssExtract...

  • markdown 基础语法

    Markdown 语法 主要分为如下几大部分:标题,段落,引用,代码区块,强调,列表,分割线,链接,图片。 标题用...

  • 学习webpack【第四章-高级概念3】

    一、css 文件的代码分割 二、shimming的作用 —————————— 一、css 文件的代码分割 load...

网友评论

      本文标题:图片分割的代码

      本文链接:https://www.haomeiwen.com/subject/pmkytctx.html