缩放图片并截图中间位置显示

代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self addView];
}
#pragma -mark -functions
//主界面
-(void)addView
{
    UIImage *imagePicture=[UIImage imageNamed:@"1.jpg"];
    UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 200, 200)];
    imageView.image=[self scaleImage:imagePicture size:CGSizeMake(300, 200)];
    imageView.backgroundColor=[UIColor redColor];
    [self.view addSubview:imageView];
}

//缩放图片,并截取中间位置显示
-(UIImage*)scaleImage:(UIImage *)image size:(CGSize )size{
    CGSize imgSize = image.size; //原图大小
    CGSize viewSize = size;          //视图大小
    CGFloat imgwidth = 0;            //缩放后的图片宽度
    CGFloat imgheight = 0;          //缩放后的图片高度

    //视图横长方形及正方形
    if (viewSize.width >= viewSize.height) {
        //缩小
        if (imgSize.width > viewSize.width && imgSize.height > viewSize.height) {
            imgwidth = viewSize.width;
            imgheight = imgSize.height/(imgSize.width/imgwidth);
        }
        //放大
        if(imgSize.width < viewSize.width){
            imgwidth = viewSize.width;
            imgheight = (viewSize.width/imgSize.width)*imgSize.height;
        }
        //判断缩放后的高度是否小于视图高度
        imgheight = imgheight < viewSize.height?viewSize.height:imgheight;
    }

    //视图竖长方形
    if (viewSize.width < viewSize.height) {
        //缩小
        if (imgSize.width > viewSize.width && imgSize.height > viewSize.height) {
            imgheight = viewSize.height;
            imgwidth = imgSize.width/(imgSize.height/imgheight);
        }

        //放大
        if(imgSize.height < viewSize.height){
            imgheight = viewSize.width;
            imgwidth = (viewSize.height/imgSize.height)*imgSize.width;
        }
        //判断缩放后的高度是否小于视图高度
        imgwidth = imgwidth < viewSize.width?viewSize.width:imgwidth;
    }

    //重新绘制图片大小
    UIImage *i;
    UIGraphicsBeginImageContext(CGSizeMake(imgwidth, imgheight));
    [image drawInRect:CGRectMake(0, 0, imgwidth, imgheight)];
    i=UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    //截取中间部分图片显示
    if (imgwidth > 0) {
        CGImageRef newImageRef = CGImageCreateWithImageInRect(i.CGImage, CGRectMake((imgwidth-viewSize.width)/2, (imgheight-viewSize.height)/2, viewSize.width, viewSize.height));
        return [UIImage imageWithCGImage:newImageRef];
    }else{
        CGImageRef newImageRef = CGImageCreateWithImageInRect(image.CGImage, CGRectMake((imgwidth-viewSize.width)/2, (imgheight-viewSize.height)/2, viewSize.width, viewSize.height));
        return [UIImage imageWithCGImage:newImageRef];
    }
}
时间: 2024-11-16 03:48:22

缩放图片并截图中间位置显示的相关文章

缩放图片,并截取中间位置显示

代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. UIImage *imagePicture=[UIImage imageNamed:@"1.jpg"]; UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 200, 200)]; image

在控件的任意位置显示图片

在控件的任意位置显示图片 效果图 xml代码 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&

C#全屏随机位置显示图片的小程序

想法:将屏幕截图作为程序背景图,在之上弹出提示窗口,选择确定后进行定时图片随机位置显示.(支持ESC键退出) 需要添加的控件:Timer 需要修改的Form1属性为下图红色区域: 资源文件的添加:添加->新建项->资源文件 ESC键退出程序: 在Form1.Designer.cs中增加 this.KeyDown += Form1_KeyDown; 代码如下: 1 Rectangle bounds = Screen.GetBounds(Screen.GetBounds(Point.Empty))

Android根据屏幕宽度,按比例缩放图片

原文链接:http://www.codeceo.com/article/android-zoom-image.html ImageView有scaleType属性可以缩放图片,让图片铺满屏幕宽度,但是会出现压缩或裁剪的情况. ImageView的scaleType的属性分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fitXY android:scaleType="center" 保持原图的大

Android拖动和缩放图片

Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中的触摸机制了,在屏幕中有手指按下.手指抬起.手指移动还有多个手指触摸的动作. 我们要实现对图片的拖拽和缩放就是要基于这些动作来进行逻辑处理. 图片的拖拽主要是计算手指開始的位置与当前手指的位置关系,来进行平移的,详细能够看代码. 图片的缩放就涉及到计算两点之间的距离来得到缩放比,调用矩阵方法来达到缩

ImageMagick +Im4java 处理上传的图片,截图,缩略图,保证高质量

ImageMagick 在windows下是不存在的,linux一般都有(最后也请确认下,可以参考官网,不过也可以简单的运行convert 命令判断). 软件官网:im4java.sourceforge.net ps 请翻墙. ImageMagick官网: http://www.imagemagick.org/ 简单操作操作: /** *@author 孙月江 */ import java.io.File; import org.im4java.core.ConvertCmd; import o

Mac 截图保存位置设置

苹果Mac OS X怎么设置截图保存位置?我们都知道通过shift+command+3(全屏截图)或者shift+command+4(选择截图)可以在Mac系统中截图,截图完成后图片默认保存在桌面上,但如果截图较多 的话桌面会变得非常凌乱,那么我们如何设置Mac截图默认的保存位置呢? 第一步.在用户/图片文件夹下,新建“截图”文件夹 第二步.打开终端,输入“defaults write com.apple.screencapture location ~/Pictures/截图”后回车 第三步.

在viewPager中双指缩放图片,双击缩放图片,单指拖拽图片

我们就把这个问题叫做图片查看器吧,它的主要功能有: 1.双击缩放图片. 2. 双指缩放图片. 3.单指拖拽图片. 为此这个图片查看器需要考虑以下的技术点: 一.双击缩放图片: 1.如果图片高度比屏幕的高度小得多,那么就将图片放大到高度与屏幕高度相等,否则就放大一个特定的倍数. 2.如何判断是否到达这个倍数来停止缩放. 3.判断完且停止放大后,图片可能已经超出了这个倍数需要的大小,如何回归到我们的目标大小. 4.判断完且停止缩小后,图片宽度可能已经小于屏幕宽度,在两边留下了空白,如何重置为原来的大

图片在容器充满居中显示

效果图: 源码如下: <!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">         <title>图片在容器充满居中显示</title>         <style type="text/css">             .container{                 width: 100