美文网首页
对图片的相关处理

对图片的相关处理

作者: MenaceiOS | 来源:发表于2017-06-10 17:23 被阅读0次

1、图片等比例压缩

//等比例压缩
-(UIImage *) imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size{
    UIImage *newImage = nil;
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    CGFloat targetWidth = size.width;
    CGFloat targetHeight = size.height;
    CGFloat scaleFactor = 0.0;
    CGFloat scaledWidth = targetWidth;
    CGFloat scaledHeight = targetHeight;
    CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);
    if(CGSizeEqualToSize(imageSize, size) == NO){
        CGFloat widthFactor = targetWidth / width;
        CGFloat heightFactor = targetHeight / height;
        if(widthFactor > heightFactor){
            scaleFactor = widthFactor;
        }
        else{
            scaleFactor = heightFactor;
        }
        scaledWidth = width * scaleFactor;
        scaledHeight = height * scaleFactor;
        if(widthFactor > heightFactor){
            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
        }else if(widthFactor < heightFactor){
            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
        }
    }
    UIGraphicsBeginImageContext(size);
    CGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width = scaledWidth;
    thumbnailRect.size.height = scaledHeight;
    [sourceImage drawInRect:thumbnailRect];
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    if(newImage == nil){
        NSLog(@"scale image fail");
    }
    UIGraphicsEndImageContext();
    return newImage;
}

2、把图片等比例压缩到指定宽度

//指定宽度按比例缩放
-(UIImage *) imageCompressForWidthScale:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth{
    
    UIImage *newImage = nil;
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    CGFloat targetWidth = defineWidth;
    CGFloat targetHeight = height / (width / targetWidth);
    CGSize size = CGSizeMake(targetWidth, targetHeight);
    CGFloat scaleFactor = 0.0;
    CGFloat scaledWidth = targetWidth;
    CGFloat scaledHeight = targetHeight;
    CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);
    
    if(CGSizeEqualToSize(imageSize, size) == NO){
        
        CGFloat widthFactor = targetWidth / width;
        CGFloat heightFactor = targetHeight / height;
        
        if(widthFactor > heightFactor){
            scaleFactor = widthFactor;
        }
        else{
            scaleFactor = heightFactor;
        }
        scaledWidth = width * scaleFactor;
        scaledHeight = height * scaleFactor;
        
        if(widthFactor > heightFactor){
            
            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
            
        }else if(widthFactor < heightFactor){
            
            thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
        }
    }
    UIGraphicsBeginImageContext(size);
    CGRect thumbnailRect = CGRectZero;
    thumbnailRect.origin = thumbnailPoint;
    thumbnailRect.size.width = scaledWidth;
    thumbnailRect.size.height = scaledHeight;
    [sourceImage drawInRect:thumbnailRect];
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    if(newImage == nil){
        
        NSLog(@"scale image fail");
    }  
    UIGraphicsEndImageContext();  
    return newImage;  
}

3、截取当前页面生成图片(屏幕外的也包括在内)

func captureScorllview(scrollView:UIScrollView) -> UIImage {
        var image = UIImage()
        UIGraphicsBeginImageContext(scrollView.contentSize)
        let savedContentOffset  = scrollView.contentOffset
        let savedFrame = scrollView.frame
        scrollView.contentOffset = .zero
        scrollView.frame = CGRect(x: 0, y: 0, width: scrollView.contentSize.width, height: scrollView.contentSize.height + 100)
        scrollView.layer.render(in: UIGraphicsGetCurrentContext()!)
        image = UIGraphicsGetImageFromCurrentImageContext()!
        let context = CIContext(options: nil)
        var inputImage = CIImage(image: image)
        let options:[String : AnyObject] = [CIDetectorImageOrientation:1 as AnyObject] //图片方向
        let filters = inputImage!.autoAdjustmentFilters(options: options)
        //遍历所有滤镜,依次处理图像
        for filter: CIFilter in filters {
            filter.setValue(inputImage, forKey: kCIInputImageKey)
            inputImage = filter.outputImage
        }
        let cgImage = context.createCGImage(inputImage!, from: inputImage!.extent)
        image = UIImage(cgImage: cgImage!)
        scrollView.contentOffset = savedContentOffset
        scrollView.frame = savedFrame
        UIGraphicsEndImageContext()
        return image
    }

相关文章

  • 对图片的相关处理

    1、图片等比例压缩 2、把图片等比例压缩到指定宽度 3、截取当前页面生成图片(屏幕外的也包括在内)

  • 图片处理相关

    pom.xml中引入thumbnailator https://github.com/coobird/thumbn...

  • 图片处理相关

    截动图--LICEcap http://www.appinn.com/licecap/ 将BMP处理为PNG 想要...

  • 图片相关处理

    1、给一个view截图 2、颜色转图片 3、判断图片类型 4、image圆角 5、image拉伸 6、取图片某一点...

  • iOS开发中图片的模糊处理()

    背景: 产品要求对项目中的图片具有模糊处理功能。 实现过程: 搜索相关资料得到的几种模糊处理的图片的方法: 1. ...

  • iOS 图片相关处理

    图片合成 -(UIImage *)addImage:(UIImage *)image1 toImage:(UIIm...

  • iOS图片处理相关

    最近公司项目要做图片处理这里总结一下: 1.普通上下文 2.遮罩处理 利用图层 3.剪切遮罩处理(针对图片) 1....

  • 图片复制、添加水印及其他处理、二维码生成

    图片处理相关方法二维码生成相关方法 再pom.xml中添加dependency 图片处理: 复制图片 添加水印及其...

  • 对图片的相关操作

    欢迎加入我个人维护QQ群:379069176PS:定期分享干货 将多张图片同时保存到相册中,出现的错误 将多张图片...

  • Java 图片处理相关笔记

    1.图片压缩 起因:工作安排需要,爬虫爬取了大量国外一些行业数据和图片几百G+。 存储在阿里云存储不是很贵但是流量...

网友评论

      本文标题:对图片的相关处理

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