zoukankan      html  css  js  c++  java
  • ios 图片处理( 1.按比例缩放 2.指定宽度按比例缩放

    本文转载至 http://blog.sina.com.cn/s/blog_6f29e81f0101tat6.html

     

    //按比例缩放,size 是你要把图显示到 多大区域 CGSizeMake(300, 140)

    -(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;

    }

    //指定宽度按比例缩放

    -(UIImage *) imageCompressForWidth:(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;

    }

  • 相关阅读:
    springboot整合springmvc应用
    spring注解使用
    亨元模式 四大引用 逃逸引用 池化思想
    springboot整合连接池
    springboot整合mybatis(待更新)
    php安装imagick扩展
    js复制功能代码
    PHP7兼容mysql_connect的方法
    linux开机启动
    centos8安装php扩展memcached报错
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/4685739.html
Copyright © 2011-2022 走看看