zoukankan      html  css  js  c++  java
  • ios实现下载图片的裁减和显示

    使用如下的方法可以裁减的同时保证了不丢失像素。

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        // Set appIcon and clear temporary data/image
        UIImage *image = [[UIImage alloc] initWithData:self.activeDownload];
        
        if (image.size.width != kAppIconSize || image.size.height != kAppIconSize)
        {
            
            //set the frame for the picture
            CGSize itemSize = CGSizeMake(kAppIconSize, kAppIconSize);
            
            //if the width is differ from height,than check
            if (image.size.width < image.size.height) {
                
                itemSize.width = (image.size.width/image.size.height)*kAppIconSize;
                NSLog(@"the width cut is %f",itemSize.width);
                
            }
            //       self.kids.appIcon = [self resizeToSize:itemSize withOrignalSize:image.size withImage:image thenCropWithRect:CGRectMake(0, 0, 70.0f, 70.0f)];
            UIGraphicsBeginImageContextWithOptions(itemSize, NO, 0.0f);
            CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
            NSLog(@"the picture width is %f %f",image.size.width,image.size.height);
            [image drawInRect:imageRect];
            self.kids.appIcon = UIGraphicsGetImageFromCurrentImageContext();
            NSLog(@"the picture end width is %f %f",self.kids.appIcon.size.width,self.kids.appIcon.size.height);
            UIGraphicsEndImageContext();
        }
        else
        {
            self.kids.appIcon = image;
        }
        [image release];
        self.activeDownload = nil;
        
        // Release the connection now that it's finished
        self.imageConnection = nil;
        
        // call our delegate and tell it that our icon is ready for display
        if (self.completionHandler)
            self.completionHandler();
        
    }

    然后需要注意的是,使用uibutton要使用setimage而不是setbackgroundimage来加载图片。否则显示的图片总是70X70的kAppIconSize的大小当图片宽高比例明显不同时候就会出现拉伸。所以要注意。

    然后使用setcontentmode来控制一下显示的内容才会有效。

  • 相关阅读:
    类方法代码重构寻找坏味道
    迭代二分查找二分查找
    系统牛逼[置顶] 使用RAMP理解内在动机 Understanding Intrinsic Motivation with RAMP
    对象服务器Webservices获取天气
    手机服务器Android消息推送(二)基于MQTT协议实现的推送功能
    概率小数2013年阿里巴巴暑期实习招聘笔试题目(不完整,笔试时间:2013.5.5)
    像素颜色JavaFX示例简易图片处理工具
    算法队列SPFA算法详解
    选择文件Eclipse制作jar包
    nullnull推箱子
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3441543.html
Copyright © 2011-2022 走看看