How to resize images proportionally / keeping the aspect ratio?

前端 未结 18 1690
野趣味
野趣味 2020-11-22 13:58

I have images that will be quite big in dimension and I want to shrink them down with jQuery while keeping the proportions constrained, i.e. the same aspect ratio.

C

18条回答
  •  醉酒成梦
    2020-11-22 14:24

    Resize to fit the container, get scale factor, scale down percentage control

     $(function () {
                let ParentHeight = 200;
                let ParentWidth = 300;
                $("#Parent").width(ParentWidth).height(ParentHeight);
                $("#ParentHeight").html(ParentHeight);
                $("#ParentWidth").html(ParentWidth);
    
                var RatioOfParent = ParentHeight / ParentWidth;
                $("#ParentAspectRatio").html(RatioOfParent);
    
                let ChildHeight = 2000;
                let ChildWidth = 4000;
                var RatioOfChild = ChildHeight / ChildWidth;
                $("#ChildAspectRatio").html(RatioOfChild);
    
                let ScaleHeight = ParentHeight / ChildHeight;
                let ScaleWidth = ParentWidth / ChildWidth;
                let Scale = Math.min(ScaleHeight, ScaleWidth);
    
                $("#ScaleFactor").html(Scale);
                // old scale
                //ChildHeight = ChildHeight * Scale;
                //ChildWidth = ChildWidth * Scale;
    
                // reduce scale by 10%, you can change the percentage
                let ScaleDownPercentage = 10;
                let CalculatedScaleValue = Scale * (ScaleDownPercentage / 100);
                $("#CalculatedScaleValue").html(CalculatedScaleValue);
    
                // new scale
                let NewScale = (Scale - CalculatedScaleValue);
                ChildHeight = ChildHeight * NewScale;
                ChildWidth = ChildWidth * NewScale;
    
                $("#Child").width(ChildWidth).height(ChildHeight);
                $("#ChildHeight").html(ChildHeight);
                $("#ChildWidth").html(ChildWidth);
    
            });
            #Parent {
                background-color: grey;
            }
    
            #Child {
                background-color: red;
            }
     
    
    
    Parent Aspect Ratio
    Child Aspect Ratio
    Scale Factor
    Calculated Scale Value
    Parent Height
    Parent Width
    Child Height
    Child Width

提交回复
热议问题