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;

    }

  • 相关阅读:
    GridView怪问题,更新时读取不到编辑后的值
    又过了一周
    虚惊一场
    [Joomla] 利用configuration.php存储简单数据
    [Joomla] Phoca Gallery 2.7去版权的方法
    SL还能做什么?
    [Joomla] Joomla 1.5不支持PHP 5.3
    [ecshop] 库项目的添加过程
    [Joomla] 著名CMS系统Joomla的后台图文解说
    了解Joomla
  • 原文地址:https://www.cnblogs.com/sjcries/p/5413417.html
Copyright © 2011-2022 走看看