zoukankan      html  css  js  c++  java
  • UIImage缩放

    前面讲了截取UIImage指定大小区域,很方便的截取`UIImage`。今天要和大家分享的是`UIImage`的缩放。

    两种缩放:

    1.缩放到指定大小,也就是指定的`size`.

    2.等比缩放。

    缩放到指定大小

    -(UIImage*)imageCompressWithSimple:(UIImage*)imagescaledToSize:(CGSize)size

    {

    UIGraphicsBeginImageContext(size);

    [imagedrawInRect:CGRectMake(0,0,size.width,size.height)];

    UIImage*newImage=UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    returnnewImage;

    }

    等比缩放

    通过缩放系数

    -(UIImage*)imageCompressWithSimple:(UIImage*)imagescale:(float)scale

    {

    CGSizesize=image.size;

    CGFloatwidth=size.width;

    CGFloatheight=size.height;

    CGFloatscaledWidth=width*scale;

    CGFloatscaledHeight=height*scale;

    UIGraphicsBeginImageContext(size);//thiswillcrop

    [imagedrawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];

    UIImage*newImage=UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    returnnewImage;

    }

    `scale`是缩放系数。

    通过计算得到缩放系数

    -(UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize

    {

    UIImage*sourceImage=[UIImageimageNamed:@"test.jpg"];

    UIImage*newImage=nil;

    CGSizeimageSize=sourceImage.size;

    CGFloatwidth=imageSize.width;

    CGFloatheight=imageSize.height;

    CGFloattargetWidth=targetSize.width;

    CGFloattargetHeight=targetSize.height;

    CGFloatscaleFactor=0.0;

    CGFloatscaledWidth=targetWidth;

    CGFloatscaledHeight=targetHeight;

    CGPointthumbnailPoint=CGPointMake(0.0,0.0);

    if(CGSizeEqualToSize(imageSize,targetSize)==NO)

    {

    CGFloatwidthFactor=targetWidth/width;

    CGFloatheightFactor=targetHeight/height;

    if(widthFactor>heightFactor)

    scaleFactor=widthFactor;//scaletofitheight

    else

    scaleFactor=heightFactor;//scaletofitwidth

    scaledWidth=width*scaleFactor;

    scaledHeight=height*scaleFactor;

    //centertheimage

    if(widthFactor>heightFactor)

    {

    thumbnailPoint.y=(targetHeight-scaledHeight)*0.5;

    }

    elseif(widthFactor<heightFactor)

    {

    thumbnailPoint.x=(targetWidth-scaledWidth)*0.5;

    }

    }

    UIGraphicsBeginImageContext(targetSize);//thiswillcrop

    CGRectthumbnailRect=CGRectZero;

    thumbnailRect.origin=thumbnailPoint;

    thumbnailRect.size.width=scaledWidth;

    thumbnailRect.size.height=scaledHeight;

    [sourceImagedrawInRect:thumbnailRect];

    newImage=UIGraphicsGetImageFromCurrentImageContext();

    if(newImage==nil)

    NSLog(@"couldnotscaleimage");

    //popthecontexttogetbacktothedefault

    UIGraphicsEndImageContext();

    returnnewImage;

    }

  • 相关阅读:
    Openlayers 3 热力图
    javaScript 新学习:Array.contains 函数
    将页面内容转为Excel下载
    Cookie 的设置和获取
    escape()、encodeURI()、encodeURIComponent()区别详解
    java 对象与二进制互转
    获取与当前类同级目录下的文件
    Windows下比较小巧的c/c++ ide
    保存到properties
    javafx 普通弹框提示
  • 原文地址:https://www.cnblogs.com/sjcries/p/5413417.html
Copyright © 2011-2022 走看看