zoukankan      html  css  js  c++  java
  • <12>保持原来的长宽比,生成一个缩略图

    /*
     * 保持原来的长宽比,生成一个缩略图
     * &-image 待传入UIImage
     * &-size 待传入UIImage要改变图像的尺寸
     * 返回处理好的UIImage
     */
    + (UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSize)siz/** * 保持原来的长宽比,生成一个缩略图 */
    + (UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSize)size
    {
        UIImage *newimage;
        if (nil == image) {
            newimage = nil;
        }
    else{
            CGSize oldsize = image.size;
            CGRect rect;
            if (size.width/size.height > oldsize.width/oldsize.height) {
                rect.size.width = size.height*oldsize.width/oldsize.height;
                rect.size.height = size.height;
                rect.origin.x = (size.width - rect.size.width)/2;
                rect.origin.y = 0;
            }
            else{
                rect.size.width = size.width;
                rect.size.height = size.width*oldsize.height/oldsize.width;
                rect.origin.x = 0;
                rect.origin.y = (size.height - rect.size.height)/2;
            }
            UIGraphicsBeginImageContext(size);
            CGContextRef context = UIGraphicsGetCurrentContext();
            CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
            UIRectFill(CGRectMake(0, 0, size.width, size.height));//clear background
            [image drawInRect:rect];
            newimage = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
        }
        return newimage;
    }
     
  • 相关阅读:
    Arduino通信篇系列之print()和write()输出方式的差异
    通信协议之Modbus协议(一)
    CAD制图系列一之绘图、标注、修改、视图
    Arduino系列之pwm控制LED灯(呼吸灯)
    [转]GDB调试基础
    Linux上编辑然后执行一段脚本的机制
    [转]进程创建-终结流程图
    [ 转]Linux进程关系
    Linux进程管理(四、 进程终结)
    Linux进程管理(三、 线程)
  • 原文地址:https://www.cnblogs.com/iQingYang/p/6687948.html
Copyright © 2011-2022 走看看