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;

    }

  • 相关阅读:
    6-stm32 滴答定时器(delay不带中断延时)
    5-stm32 滴答定时器(delay中断延时)
    4- stm32 gpio重映射
    3- stm32 gpio寄存器
    2-stm32 gpio位带
    Linux Command
    DIV+CSS规范命名
    JS事件报错之Cannot set property 'onclick' of null
    创建对象的三种方式
    密码的显示和隐藏
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/4685739.html
Copyright © 2011-2022 走看看