CLImageEditor 0.2.4

CLImageEditor 0.2.4

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最新发布2018年9月

yackle 维护。



  • Sho Yakushiji

CLImageEditor

CLImageEditor 为 iPhone 应用提供基本的图像编辑功能。这个 ViewController 简单易用,也可以方便地集成到 UIImagePickerController 中。

sample

安装

使用 CLImageEditor 最简单的方法是将 CLImageEditor 组(或目录)中的所有文件复制到您的应用中。将以下框架添加到您的项目中(构建步骤 > 链接二进制文件与库):Accelerate、CoreGraphics、CoreImage。

可选的工具有在 OptionalImageTools 中。您可能需要根据需要添加。

或使用 git 子模块

作为另一种选择,您应该能够设置一个 git 子模块 并在您的 Xcode 项目中引用这些文件。

git subtree add https://github.com/yackle/CLImageEditor.git

或 CocoaPods

CocoaPods 是 Objective-C 项目的依赖管理器。

pod 'CLImageEditor'

pod 'CLImageEditor/AllTools'

通过指定 AllTools 子规范,可以安装所有图片工具,包括可选工具。

可选图片工具

以下是一些可选工具。

pod 'CLImageEditor/ResizeTool'

pod 'CLImageEditor/StickerTool'

pod 'CLImageEditor/TextTool'

pod 'CLImageEditor/SplashTool'

用法

使用 CLImageEditor 非常简单。只需使用 UIimage 进行初始化并设置代理。然后您可以使用它作为常规 ViewController。

#import "CLImageEditor.h"

@interface ViewController()
<CLImageEditorDelegate>
@end

- (void)presentImageEditorWithImage:(UIImage*)image
{
    CLImageEditor *editor = [[CLImageEditor alloc] initWithImage:image];
    editor.delegate = self;
	
    [self presentViewController:editor animated:YES completion:nil];
}

当与 UIImagePickerController 一起使用时,可以通过调用拾取器的 pushViewController:animated: 使 CLImageEditor 成为拾取器的一部分。

#pragma mark- UIImageController delegate

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    
    CLImageEditor *editor = [[CLImageEditor alloc] initWithImage:image];
    editor.delegate = self;
    
    [picker pushViewController:editor animated:YES];
}

在编辑后,编辑器将调用代理的 imageEditor:didFinishEdittingWithImage: 方法。代理的方法是接收编辑后的图像所必需的。

#pragma mark- CLImageEditor delegate

- (void)imageEditor:(CLImageEditor *)editor didFinishEdittingWithImage:(UIImage *)image
{
    _imageView.image = image;
    [editor dismissViewControllerAnimated:YES completion:nil];
}

此外,还提供可选代理的 imageEditorDidCancel: 方法,以便捕获取消回调。

有关更多详细信息,请参阅 CLImageEditorDemo

自定义

图标图像包含在 CLImageEditor.bundle 中。您可以通过重写图标图像来更改外观。

其他用于主题设置的特性行尚未实现。

菜单自定义

可以使用 CLImageToolInfo 对图像工具进行自定义。CLImageEditor 的 toolInfo 属性包含访问每个工具信息的功能。例如,使用 subToolInfoWithToolName:recursive: 方法可以获取特定名称的工具信息。

CLImageEditor *editor = [[CLImageEditor alloc] initWithImage:_imageView.image];
editor.delegate = self;

CLImageToolInfo *tool = [editor.toolInfo subToolInfoWithToolName:@"CLToneCurveTool" recursive:NO];

在获取工具信息后,通过更改其属性,可以在菜单视图中自定义图像工具。

CLImageToolInfo *tool = [editor.toolInfo subToolInfoWithToolName:@"CLToneCurveTool" recursive:NO];
tool.title = @"TestTitle";
tool.available = NO;     // if available is set to NO, it is removed from the menu view.
tool.dockedNumber = -1;  // Bring to top
//tool.iconImagePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"];
  • dockedNumber 决定菜单项顺序。请注意,它仅用作排序的键。

可以通过以下代码确认工具名称列表。

NSLog(@"%@", editor.toolInfo);
NSLog(@"%@", editor.toolInfo.toolTreeDescription);

目前,这里有 iOS 7 的工具

CLFilterTool
	CLDefaultEmptyFilter
	CLDefaultLinearFilter
	CLDefaultVignetteFilter
	CLDefaultInstantFilter
	CLDefaultProcessFilter
	CLDefaultTransferFilter
	CLDefaultSepiaFilter
	CLDefaultChromeFilter
	CLDefaultFadeFilter
	CLDefaultCurveFilter
	CLDefaultTonalFilter
	CLDefaultNoirFilter
	CLDefaultMonoFilter
	CLDefaultInvertFilter    
CLAdjustmentTool
CLEffectTool
	CLEffectBase
	CLSpotEffect
	CLHueEffect
	CLHighlightShadowEffect
	CLBloomEffect
	CLGloomEffect
	CLPosterizeEffect
	CLPixellateEffect
CLBlurTool
CLRotateTool
CLClippingTool
CLResizeTool
CLToneCurveTool
CLStickerTool
CLTextTool

一些工具有 optionalInfo 属性,它可以实现更详细的自定义。

剪辑工具

剪辑工具允许您设置预设比例和纵向/横向按钮的可见性。

NSArray *ratios = @[
                    @{@"value1":@0, @"value2":@0,       @"titleFormat":@"Custom"}, // if either value is zero, free form is set.
                    @{@"value1":@1, @"value2":@1,       @"titleFormat":@"%.1f : %.1f"},
                    @{@"value1":@1, @"value2":@1.618,   @"titleFormat":@"%g : %g"},
                    @{@"value1":@2, @"value2":@3},
                    @{@"value1":@3, @"value2":@2},
                    ];

CLImageToolInfo *tool = [editor.toolInfo subToolInfoWithToolName:@"CLClippingTool" recursive:NO];
tool.optionalInfo[@"ratios"] = ratios;
tool.optionalInfo[@"swapButtonHidden"] = @YES;
缩放工具

您可以设置预设的大小和最大尺寸。

CLImageToolInfo *tool = [editor.toolInfo subToolInfoWithToolName:@"CLResizeTool" recursive:NO];
tool.optionalInfo[@"presetSizes"] = @[@240, @320, @480, @640, @800, @960, @1024, @2048];
tool.optionalInfo[@"limitSize"] = @3200;
贴纸工具

您可以为含有贴纸图像的另一个包的目录设置路径。

CLImageToolInfo *tool = [editor.toolInfo subToolInfoWithToolName:@"CLStickerTool" recursive:NO];
tool.optionalInfo[@"stickerPath"] = @"yourStickerPath";

许可

CLImageEditor 在MIT许可证下发布,参见 LICENSE

致谢

图标由Freepik制作,来自www.flaticon.com,许可由CC 3.0 BY提供。