UIImage+Crop.h
#import <UIKit/UIKit.h>
@interface UIImage (Crop)
- (UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize;
@end
UIImage+Crop.m
#import "UIImage+Crop.h"
@implementation UIImage (Crop)
- (UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize {
UIImage *sourceImage = self;
UIImage *newImage = nil;
CGSize imageSize = sourceImage.size;
CGFloat width = imageSize.width;
CGFloat height = imageSize.height;
CGFloat targetWidth = targetSize.width;
CGFloat targetHeight = targetSize.height;
CGFloat scaleFactor = 0.0;
CGFloat scaledWidth = targetWidth;
CGFloat scaledHeight = targetHeight;
CGPoint thumbnailPoint = CGPointMake(0.0, 0.0);
if (CGSizeEqualToSize(imageSize, targetSize) == NO) {
CGFloat widthFactor = targetWidth / width;
CGFloat heightFactor = targetHeight / height;
if (widthFactor > heightFactor)
scaleFactor = heightFactor;
else
scaleFactor = widthFactor;
scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;
if (widthFactor > heightFactor) {
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
} else if (widthFactor < heightFactor) {
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
}
}
CGSize target_size = CGSizeMake(scaledWidth, scaledHeight);
UIGraphicsBeginImageContext(target_size);
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = thumbnailPoint;
thumbnailRect.size.width = scaledWidth;
thumbnailRect.size.height = scaledHeight;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
@end
分享到:
相关推荐
【jQuery图片裁剪插件详解】 在Web开发中,用户经常需要上传并编辑图片,例如在个人资料设置、产品发布或社交媒体应用中。基于jQuery的图片裁剪插件为此提供了便利,它允许用户在浏览器中预览并裁剪图片,然后以所...
在本文中,我们将深入探讨如何使用C# WinForm来实现一个简单而实用的图片裁剪功能。C#是一种面向对象的编程语言,广泛应用于Windows桌面应用程序开发,而WinForm是.NET Framework提供的一种用户界面(UI)框架。我们...
在本文中,我们将深入探讨如何在Flutter框架中创建一个自定义控件,专注于实现图片裁剪功能。Flutter作为Google推出的跨平台开发工具,以其丰富的Widget库和高效的开发体验深受开发者喜爱。然而,尽管Flutter提供了...
Bootstrap 和 Cropper.js 是两个在前端开发中广泛使用的工具,它们结合使用可以实现高效、美观的图片裁剪功能。在H5(HTML5)应用中,这种功能常常用于头像上传、图片预览和编辑等场景。下面我们将深入探讨这两个库...
在Android开发中,图片裁剪是一项常见的功能,广泛应用于各种应用程序,如社交应用中的头像设置、拍照应用的编辑功能等。本知识点将详细介绍如何在Android中实现图片的移动和缩放裁剪。 首先,我们需要了解Android...
在IT行业中,jQuery图片裁剪是一项常见的前端技术,主要用于网页上的图像处理,让用户可以自定义裁剪区域,以便上传或编辑图片。以下是对这个主题的详细讲解。 标题"jquery_图片裁剪"指的是使用jQuery库实现的图片...
在C# WinForm开发中,图像处理是一项常见的需求,尤其是图片裁剪功能,它能够帮助用户根据需要选取图像的一部分进行保存或编辑。本资源提供的就是一个实现了这一功能的用户控件,名为"C# winForm 图片裁剪代码",...
本资源“uni-app的图片裁剪nice-cropper.rar”聚焦于uni-app的一个重要应用场景:图片裁剪。在移动应用或Web应用中,用户可能需要上传或编辑图片,此时图片裁剪功能就显得尤为关键。 “nice-cropper”是针对uni-app...
在ASP图片裁剪系统中,服务器端的ASP负责接收用户的请求,处理图片裁剪逻辑,如读取上传的图片、计算裁剪参数、保存裁剪结果等。 2. JavaScript:作为客户端脚本语言,JavaScript在用户浏览器上运行,提供用户界面...
在这个场景中,我们关注的是一个针对Vue.js设计的图片裁剪插件。这个插件被称为"vue-img-cutter",它提供了一种简单易用的方式来处理图片裁剪,适用于各种Web应用的需求。 1. **插件特性**: - **移动图像**:用户...
微信小程序源码,完整实现图片裁剪功能。 可以自由拖动裁剪框和手动调整裁剪尺寸,实时显示裁剪尺寸大小,准确完成图片裁剪功能,并且能够恢复原始图片,不会丢失原图。 提供完整源码,能够直接在小程序里正常运行,...
在安卓应用开发中,"安卓图片裁剪后上传"是一个常见的功能需求,尤其在社交类应用中,如模仿微信朋友圈的分享功能。这个功能让用户能够选择一张图片,对其进行裁剪,然后将裁剪后的图片上传到服务器。在本文中,我们...
本次我们关注的是一个基于Taro框架实现的跨端图片裁剪组件,这个组件能够帮助开发者在这些不同平台上实现一致的图片裁剪功能。 首先,让我们深入了解Taro框架。Taro 是一个开源的多端开发框架,由京东云维护。它的...
本文将深入探讨如何实现“android图片裁剪上传头像”的功能,包括图片裁剪工具的选择、实现原理以及上传过程。 首先,我们要解决的是图片裁剪问题。在描述中提到的“这是我找到的最好的图片裁剪工具”,很可能是...
本项目“用c#实现的图片裁剪并保存”聚焦于这一领域,通过扫描指定文件夹中的图片,对不符合尺寸要求的图片进行裁剪和缩放,并将处理后的图片覆盖原有的文件。以下是对这一技术实现的详细解析: 首先,我们需要引入...
ASP.NET 图片裁剪技术是Web开发中一种实用的功能,常用于网站的用户头像上传、产品图片展示等场景,允许用户或系统根据需求调整图片的尺寸和比例。本示例提供了一个详细的代码实现,非常适合开发者学习和借鉴。 在...
"web.config"和"web.sln"等文件可能是ASP.NET项目配置和解决方案文件,与前端的JavaScript实现图片裁剪功能关系不大,但它们可能用于构建服务器端的接口,用于接收裁剪后的图片数据。 7. 其他资源: "from.gif...
图片裁剪的核心在于两个主要步骤:图片加载和绘制到canvas以及使用`clip()`方法定义裁剪区域。 1. 图片加载和绘制: 首先,创建一个`Image`对象并设置其`src`属性为要裁剪的图片URL。当图片加载完成后,使用`...
本文将深入探讨如何实现自定义尺寸的图片裁剪功能,并且支持图片的手动缩放,适用于iOS 6.0及以上版本。我们将主要关注以下几个关键知识点: 1. **UIImage**:UIImage是苹果iOS SDK中用于处理图像的核心类。它负责...
在IT领域,图片裁剪是常见的前端功能,用于用户上传照片并按照特定尺寸或比例进行裁剪,以适应网页、应用或服务的需求。本资源"js图片裁剪插件 内附demo.rar"提供了一个JavaScript实现的图片裁剪解决方案,包括前端...