Giter VIP home page Giter VIP logo

jpimageresizerview's Introduction

𝗛𝗲𝗹𝗹𝗼! 🥳 𝗜'𝗺 Rogue24 ٩(๑>◡<๑)۶

iOS

🏖 平平无奇的iOS开发者一枚 | UI狂魔🤩 | 十分热衷iOS的动画动效🤯

  • 🍭 喜欢实现一些丝滑又自然的界面和效果
  • 🛠 喜欢封装一些高效简洁且易用的工具类
  • 🧐 喜欢分享一些平时开发比较少见的见解

Status

Rogue24's github stats

github contribution grid snake animation

Job-hunt

👨‍💼 广州iOS求职 - 比较擅长代码级别的性能优化

My partial repository

JPImageresizerView InfiniteeUI JPFloatingWindow
JPCrop JPMovieWriter WaterfallLayout
TurntableView

Contact

QQ: 184669029
E-mail: [email protected]

Visitors

HitCount

jpimageresizerview's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jpimageresizerview's Issues

不好意思还有一个问题,我还要做什么才能显示?

@interface EditImageViewController ()

{
JPImageresizerView *_imageresizerView;
}

@EnD

@implementation EditImageViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // 注意:iOS11以下的系统,所在的controller最好设置automaticallyAdjustsScrollViewInsets为NO,不然就会随导航栏或状态栏的变化产生偏移
    if (@available(iOS 11.0, *)) {

    } else {
    self.automaticallyAdjustsScrollViewInsets = NO;
    }

    [self addSubviews];

}

  • (void)addSubviews {
    [self.view addSubview:_imageresizerView];
    }

  • (JPImageresizerConfigure *)configure {
    if (_configure == nil) {
    self.editImage = [UIImage imageNamed:@"Kobe.jpg"];
    _configure = [JPImageresizerConfigure defaultConfigureWithResizeImage:self.editImage
    make:^(JPImageresizerConfigure *configure) {
    configure
    .jp_maskAlpha(0.5)
    .jp_frameType(JPConciseFrameType)
    .jp_isClockwiseRotation(YES)
    .jp_animationCurve(JPAnimationCurveEaseOut)
    .jp_viewFrame([UIScreen mainScreen].bounds);
    }];
    }

    return _configure;
    }

  • (JPImageresizerView *)imageresizerView {
    if (_imageresizerView == nil) {
    kWEAK_SELF

      _imageresizerView = [JPImageresizerView imageresizerViewWithConfigure:self.configure
                                                  imageresizerIsCanRecovery:^(BOOL isCanRecovery) {
          
          
      }
                                               imageresizerIsPrepareToScale:^(BOOL isPrepareToScale) {
          
      }];
    

    }

    return _imageresizerView;
    }

裁剪图片崩溃

#0 Thread

CALayerInvalidGeometry

CALayer position contains NaN: [177 nan]. Layer: <CALayer:0x280837fe0; position = CGPoint (0 0); bounds = CGRect (0 0; 0 0); delegate = <UIImageView: 0x103c27720; frame = (0 0; 0 0); layer = <CALayer: 0x280837fe0>>; opaque = YES; allowsGroupOpacity = YES; >

0 CoreFoundation __CFBundleDlfcnGetSymbolByNameWithSearch + 136
1 libobjc.A.dylib objc_exception_throw + 60
2 CoreFoundation -[__NSCFCalendar dateByAddingComponents:toDate:options:] + 996
3 QuartzCore cons_CALayer_kCAValueRect(unsigned int, bool) + 12
4 QuartzCore cons_CALayer_kCAValuePoint(unsigned int, bool) + 156
5 QuartzCore cons_CALayer_kCAValueUnsignedInt(unsigned int, bool) + 64
6 UIKitCore -[_UIViewLayoutFeedbackLoopDebugger description] + 1576
7 UIKitCore -[UIKeyboardEmojiFamilyConfigurationView _updateReferencedKeySelectedVariantIndexBasedOnCurrentConfiguration] + 408
8 JPImageresizerView -[JPImageresizerView updateImageViewFrameWithImage:] + 320
9 JPImageresizerView -[JPImageresizerView setupImageViewWithImage:] + 176
10 JPImageresizerView -[JPImageresizerView initWithResizeImage:frame:frameType:animationCurve:blurEffect:bgColor:maskAlpha:strokeColor:verBaseMargin:horBaseMargin:resizeWHScale:contentInsets:borderImage:borderImageRectInset:maximumZoomScale:isRoundResize:isShowMidDots:imageresizerIsCanRecovery:imageresizerIsPrepareToScale:] + 928
11 JPImageresizerView +[JPImageresizerView imageresizerViewWithConfigure:imageresizerIsCanRecovery:imageresizerIsPrepareToScale:] + 612

好像是图片宽高没有拿到,导致的问题

建议:需求建议

能否添加一个配置,让白色截取框放大缩小之后 图片所在的视图保持不动 , 可以随意拖动白色截取框的位置,调整大小呢.感谢作者.

需求建议

大佬 能不能加个block实时返回裁剪框选中后的视频相对于原始视频尺寸裁剪的rect

编译失败

在子模块里引入了这个库,编译失败

1

裁剪比例来回切换会导致图片无限放大

- (void)updateImageOriginFrameWithDirection:(JPImageresizerRotationDirection)rotationDirection

这个方法里面获取的imageView的宽高(baseImageW、baseImageH)是不会变的,就会导致即使图片宽高已经超过裁剪框,图片也会自动放大。我觉得是不是需要乘以一下当前scrollView的zoomScale更合适一些?

有问题想请求一下

这个是用IOS版本的实现,我对IOS不算懂,但是现在是有一个需求,用Unity来实现,不知道楼主知道怎么实现吗?可以说下大致思路吗?只需要裁剪那一部分,自由拖拽,然后裁剪图片

English documentation

Will you support those of us who speaks English in either the documentation or the readme file?

如何自定义蒙版图片

1: 可以自定义蒙版图片么?
2: shapeList的工作原理;i是什么 有点没看懂代码 那些蒙版图片是怎么绘制出来的?

使用swift构建pod私有库时,引入"JPImageresizerView",编译错误

当我使用swift构建自己的pod私有库时,引入依赖s.dependency 'JPImageresizerView',编译错误,分两大类错误:

  1. 在我自己的xxx.swift文件中使用 import JPImageresizerView,报错”Could not build Objective-C module 'JPImageresizerView'“;
  2. 在JPImageresizerView pod组件内部如:#import <JPImageresizerTypedef.h>等使用尖角号的方式引入头文件的地方,报错:'JPImageresizerTypedef.h' file not found with include; use "quotes" instead

我的尝试
当我尝试把JPImageresizerView组件内所有以尖角号<>引用头文件的方式改为以双引号""后,例如:把#import <JPImageresizerTypedef.h>改为#import "JPImageresizerTypedef.h"后,我的私有pod组件库编译顺利通过了,还请大佬抽时间验证修复下这个问题 @Rogue24

能否增加拍摄视频功能

当前是选择本地视频进行编辑,能否增加拍摄视频时,给出一个视频宽高比,进行视频拍摄。还有编辑视频长度,获取封面等功能,类似于微信视频号的功能。谢谢

裁剪有留白的情况

在xsMax手机上进行裁剪横图的时候,出现裁剪后的图片有留白的情况。
目测代码:
// 获取裁剪区域
CGFloat imageScale = resultImage.scale;
CGFloat imageWidth = resultImage.size.width;
CGFloat imageHeight = resultImage.size.height;
CGFloat cropX = imageWidth * (cropFrame.origin.x / relativeSize.width);
CGFloat cropY = imageHeight * (cropFrame.origin.y / relativeSize.height);
CGFloat cropW = imageWidth * (cropFrame.size.width / relativeSize.width);
CGFloat cropH = imageHeight * (cropFrame.size.height / relativeSize.height);

这里的cropW和cropH的裁剪区域过大。我不确定是不是精度丢失导致的。

裁剪问题

我们有个需求,要求裁剪的图片为2寸照片,像素为413*626,这个用咱的sdk的话需要怎么设置。求解答

如何计算图片的内存大小

想请教下这个问题,
我先在用的是 CGImageGetHeight(image.CGImage) * CGImageGetBytesPerRow(image.CGImage); 好像不正确

部分属性设置无效

为啥有些属性在JPImageresizerConfigure的初始化block中设置无效,但是在JPImageresizerView的实例中设置就有效?

Fatal Exception: CALayerInvalidGeometry CALayer position contains NaN: [177.5 nan]

Fatal Exception: CALayerInvalidGeometry
0 CoreFoundation 0x1e3fabf50 __exceptionPreprocess
1 libobjc.A.dylib 0x1e31a8284 objc_exception_throw
2 CoreFoundation 0x1e3eae25c -[NSCache init]
3 QuartzCore 0x1e8659d50 CA::Layer::set_position(CA::Vec2 const&, bool)
4 QuartzCore 0x1e8659c9c -[CALayer setPosition:]
5 QuartzCore 0x1e8659664 -[CALayer setFrame:]
6 UIKitCore 0x212112200 -[UIView(Geometry) setFrame:]
7 UIKitCore 0x2120e1eb8 -[UIImageView _setViewGeometry:forMetric:]
8 JPImageresizerView 0x1060e7224 -[JPImageresizerView updateSubviewLayouts] (JPImageresizerView.m:355)
9 ****Client 0x10431a088 __52-[CCMCutImageViewController rightNavItemClickAction]_block_invoke (CCMCutImageViewController.m:57)
10 JPImageresizerView 0x1060e87a4 -[JPImageresizerView imageresizerWithComplete:isOriginImageSize:referenceWidth:] (JPImageresizerView.m:545)
11 ****Client 0x104319fe4 -[CCMCutImageViewController rightNavItemClickAction] (CCMCutImageViewController.m:55)
12 libobjc.A.dylib 0x1e31a3900 -[NSObject performSelector:withObject:withObject:]
13 UIKitCore 0x211c697c4 -[UIApplication sendAction:to:from:forEvent:]
14 UIKitCore 0x2113ffccc __45-[_UIButtonBarTargetAction _invoke:forEvent:]_block_invoke
15 UIKitCore 0x2113ffbf8 -[_UIButtonBarTargetAction _invoke:forEvent:]
16 libobjc.A.dylib 0x1e31a3900 -[NSObject performSelector:withObject:withObject:]
17 UIKitCore 0x211c697c4 -[UIApplication sendAction:to:from:forEvent:]
18 UIKitCore 0x2116cfcec -[UIControl sendAction:to:forEvent:]
19 UIKitCore 0x2116d0020 -[UIControl _sendActionsForEvents:withEvent:]
20 UIKitCore 0x2116cefc0 -[UIControl touchesEnded:withEvent:]
21 UIKitCore 0x2118634d8 _UIGestureEnvironmentSortAndSendDelayedTouches
22 UIKitCore 0x21185e0d4 _UIGestureEnvironmentUpdate
23 CoreFoundation 0x1e3f39c54 CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION
24 CoreFoundation 0x1e3f3472c __CFRunLoopDoObservers
25 CoreFoundation 0x1e3f34cb0 __CFRunLoopRun
26 CoreFoundation 0x1e3f344b8 CFRunLoopRunSpecific
27 GraphicsServices 0x1e61e7be8 GSEventRunModal
28 UIKitCore 0x211c68048 UIApplicationMain
29 ****Client 0x104095058 main (main.m:14)
30 libdyld.dylib 0x1e39e9050 start

关于缩放裁剪。

有一张比较宽的图片,我用下面这个方法裁成3:4, 发现图片变小了,应该是没有缩放直接裁剪导致的。

   //将图片裁剪成指定比例(多余部分自动删除)
    func crop(ratio: CGFloat) -> UIImage {
        //计算最终尺寸
        var newSize:CGSize!
        if size.width/size.height > ratio {
            newSize = CGSize(width: size.height * ratio, height: size.height)
        }else{
            newSize = CGSize(width: size.width, height: size.width / ratio)
        }
     
        ////图片绘制区域
        var rect = CGRect.zero
        rect.size.width  = size.width
        rect.size.height = size.height
        rect.origin.x    = (newSize.width - size.width ) / 2.0
        rect.origin.y    = (newSize.height - size.height ) / 2.0
         
        //绘制并获取最终图片
        UIGraphicsBeginImageContext(newSize)
        draw(in: rect)
        let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
         
        return scaledImage!
    }

想问一下,需要做到demo里编辑页面里选固定尺寸然后生成裁剪后的图片,有提供代码直接操作的方式嘛。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.