복붙노트

[JQUERY] 어떻게 화면 비율을 유지 / 비례하여 이미지 크기를 조정하려면 어떻게?

JQUERY

어떻게 화면 비율을 유지 / 비례하여 이미지 크기를 조정하려면 어떻게?

해결법


  1. 1.http://ericjuden.com/2009/07/jquery-image-resize/에서이 코드 조각에서보세요

    http://ericjuden.com/2009/07/jquery-image-resize/에서이 코드 조각에서보세요

    $(document).ready(function() {
        $('.story-small img').each(function() {
            var maxWidth = 100; // Max width for the image
            var maxHeight = 100;    // Max height for the image
            var ratio = 0;  // Used for aspect ratio
            var width = $(this).width();    // Current image width
            var height = $(this).height();  // Current image height
    
            // Check if the current width is larger than the max
            if(width > maxWidth){
                ratio = maxWidth / width;   // get ratio for scaling image
                $(this).css("width", maxWidth); // Set new width
                $(this).css("height", height * ratio);  // Scale height based on ratio
                height = height * ratio;    // Reset height to match scaled image
                width = width * ratio;    // Reset width to match scaled image
            }
    
            // Check if current height is larger than max
            if(height > maxHeight){
                ratio = maxHeight / height; // get ratio for scaling image
                $(this).css("height", maxHeight);   // Set new height
                $(this).css("width", width * ratio);    // Scale width based on ratio
                width = width * ratio;    // Reset width to match scaled image
                height = height * ratio;    // Reset height to match scaled image
            }
        });
    });
    

  2. 2.나는 이것이 정말 멋진 방법이라고 생각 :

    나는 이것이 정말 멋진 방법이라고 생각 :

     /**
      * Conserve aspect ratio of the original region. Useful when shrinking/enlarging
      * images to fit into a certain area.
      *
      * @param {Number} srcWidth width of source image
      * @param {Number} srcHeight height of source image
      * @param {Number} maxWidth maximum available width
      * @param {Number} maxHeight maximum available height
      * @return {Object} { width, height }
      */
    function calculateAspectRatioFit(srcWidth, srcHeight, maxWidth, maxHeight) {
    
        var ratio = Math.min(maxWidth / srcWidth, maxHeight / srcHeight);
    
        return { width: srcWidth*ratio, height: srcHeight*ratio };
     }
    

  3. 3.내가 제대로 질문을 이해한다면, 당신도 이것에 대한 jQuery를 필요가 없습니다. 클라이언트에 비례하여 이미지를 축소 혼자 CSS로 수행 할 수 있습니다 불과 100 %로 최대 폭 및 최대 높이를 설정합니다.

    내가 제대로 질문을 이해한다면, 당신도 이것에 대한 jQuery를 필요가 없습니다. 클라이언트에 비례하여 이미지를 축소 혼자 CSS로 수행 할 수 있습니다 불과 100 %로 최대 폭 및 최대 높이를 설정합니다.

    <div style="height: 100px">
    <img src="http://www.getdigital.de/images/produkte/t4/t4_css_sucks2.jpg"
        style="max-height: 100%; max-width: 100%">
    </div>​
    

    여기에 바이올린는 다음과 같습니다 http://jsfiddle.net/9EQ5c/


  4. 4.가로 세로 비율을 결정하기 위해, 당신은 목표하는 비율이 필요합니다.

    가로 세로 비율을 결정하기 위해, 당신은 목표하는 비율이 필요합니다.

    function getHeight(length, ratio) {
      var height = ((length)/(Math.sqrt((Math.pow(ratio, 2)+1))));
      return Math.round(height);
    }
    

    function getWidth(length, ratio) {
      var width = ((length)/(Math.sqrt((1)/(Math.pow(ratio, 2)+1))));
      return Math.round(width);
    }
    

    이 예에서 나는이 일반적인 모니터 화면 비율부터 16:10 사용합니다.

    var ratio = (16/10);
    var height = getHeight(300,ratio);
    var width = getWidth(height,ratio);
    
    console.log(height);
    console.log(width);
    

    위의 결과는 147과 300이 될 것입니다


  5. 5.사실 난 그냥이 문제로 실행하고 내가 찾은 해결책은 이상하게도 간단하고 이상한

    사실 난 그냥이 문제로 실행하고 내가 찾은 해결책은 이상하게도 간단하고 이상한

    $("#someimage").css({height:<some new height>})
    

    그리고 기적 화상은 새로운 높이와 동일한 비율을 보존로 조정한다!


  6. 6.이 문제에 대한 4 개 매개 변수가 있습니다

    이 문제에 대한 4 개 매개 변수가 있습니다

    그리고 3 개 가지 조건 매개 변수가

    해결책

    그것은 당신이 할 필요가 전부입니다.

    //Pseudo code
    
    
    iX;//current width of image in the client
    iY;//current height of image in the client
    cX;//configured width
    cY;//configured height
    fX;//final width
    fY;//final height
    
    1. check if iX,iY,cX,cY values are >0 and all values are not empty or not junk
    
    2. lE = iX > iY ? iX: iY; //long edge
    
    3. if ( cX < cY )
       then
    4.      factor = cX/lE;     
       else
    5.      factor = cY/lE;
    
    6. fX = iX * factor ; fY = iY * factor ; 
    

    이것은 나는 당신에게 코드를 제공하고 있지 않다, 성숙한 포럼입니다 :)


  7. 7.합니까 도움이?

    합니까 도움이?

    브라우저는 그대로 화면 비율을 유지하는 처리됩니다.

    즉 화상의 폭이 높이보다 크고 높이가 비례 적으로 계산 될 때의 최대 폭 차기. 높이가 폭보다 큰 경우에 유사하게 최대 높이가 유효 할 것이다.

    이에 대한 jQuery를 또는 자바 스크립트가 필요하지 않습니다.

    IE7 +와 다른 브라우저에서 지원 (http://caniuse.com/minmaxwh).


  8. 8.이것은 모든 가능한 비율로 이미지를 작동합니다

    이것은 모든 가능한 비율로 이미지를 작동합니다

    $(document).ready(function() {
        $('.list img').each(function() {
            var maxWidth = 100;
            var maxHeight = 100;
            var width = $(this).width();
            var height = $(this).height();
            var ratioW = maxWidth / width;  // Width ratio
            var ratioH = maxHeight / height;  // Height ratio
    
            // If height ratio is bigger then we need to scale height
            if(ratioH > ratioW){
                $(this).css("width", maxWidth);
                $(this).css("height", height * ratioW);  // Scale height according to width ratio
            }
            else{ // otherwise we scale width
                $(this).css("height", maxHeight);
                $(this).css("width", height * ratioH);  // according to height ratio
            }
        });
    });
    

  9. 9.여기 Mehdiway의 대답에 수정이다. 새로운 폭 및 / 또는 높이를 최대 값으로 설정되지 않았다. http://spacecoastsports.com/wp-content/uploads/2014/06/sportsballs1.png : 좋은 테스트 케이스가 다음 (1768 X 1075 픽셀)이다. (나는 명성 포인트의 부족으로 인해 위의 그것에 대해 언급 할 수 없습니다.)

    여기 Mehdiway의 대답에 수정이다. 새로운 폭 및 / 또는 높이를 최대 값으로 설정되지 않았다. http://spacecoastsports.com/wp-content/uploads/2014/06/sportsballs1.png : 좋은 테스트 케이스가 다음 (1768 X 1075 픽셀)이다. (나는 명성 포인트의 부족으로 인해 위의 그것에 대해 언급 할 수 없습니다.)

      // Make sure image doesn't exceed 100x100 pixels
      // note: takes jQuery img object not HTML: so width is a function
      // not a property.
      function resize_image (image) {
          var maxWidth = 100;           // Max width for the image
          var maxHeight = 100;          // Max height for the image
          var ratio = 0;                // Used for aspect ratio
    
          // Get current dimensions
          var width = image.width()
          var height = image.height(); 
          console.log("dimensions: " + width + "x" + height);
    
          // If the current width is larger than the max, scale height
          // to ratio of max width to current and then set width to max.
          if (width > maxWidth) {
              console.log("Shrinking width (and scaling height)")
              ratio = maxWidth / width;
              height = height * ratio;
              width = maxWidth;
              image.css("width", width);
              image.css("height", height);
              console.log("new dimensions: " + width + "x" + height);
          }
    
          // If the current height is larger than the max, scale width
          // to ratio of max height to current and then set height to max.
          if (height > maxHeight) {
              console.log("Shrinking height (and scaling width)")
              ratio = maxHeight / height;
              width = width * ratio;
              height = maxHeight;
              image.css("width", width);
              image.css("height", height);
              console.log("new dimensions: " + width + "x" + height);
          }
      }
    

  10. 10.

    $('#productThumb img').each(function() {
        var maxWidth = 140; // Max width for the image
        var maxHeight = 140;    // Max height for the image
        var ratio = 0;  // Used for aspect ratio
        var width = $(this).width();    // Current image width
        var height = $(this).height();  // Current image height
        // Check if the current width is larger than the max
        if(width > height){
            height = ( height / width ) * maxHeight;
    
        } else if(height > width){
            maxWidth = (width/height)* maxWidth;
        }
        $(this).css("width", maxWidth); // Set new width
        $(this).css("height", maxHeight);  // Scale height based on ratio
    });
    

  11. 11.이미지가 비례 경우,이 코드는 이미지와 함께 래퍼를 채울 것입니다. 이미지는 다음 여분의 폭 비율에없는 경우 / 높이립니다 얻을 것이다.

    이미지가 비례 경우,이 코드는 이미지와 함께 래퍼를 채울 것입니다. 이미지는 다음 여분의 폭 비율에없는 경우 / 높이립니다 얻을 것이다.

        <script type="text/javascript">
            $(function(){
                $('#slider img').each(function(){
                    var ReqWidth = 1000; // Max width for the image
                    var ReqHeight = 300; // Max height for the image
                    var width = $(this).width(); // Current image width
                    var height = $(this).height(); // Current image height
                    // Check if the current width is larger than the max
                    if (width > height && height < ReqHeight) {
    
                        $(this).css("min-height", ReqHeight); // Set new height
                    }
                    else 
                        if (width > height && width < ReqWidth) {
    
                            $(this).css("min-width", ReqWidth); // Set new width
                        }
                        else 
                            if (width > height && width > ReqWidth) {
    
                                $(this).css("max-width", ReqWidth); // Set new width
                            }
                            else 
                                (height > width && width < ReqWidth)
                    {
    
                        $(this).css("min-width", ReqWidth); // Set new width
                    }
                });
            });
        </script>
    

  12. 12.추가로 온도 - 바르거나 괄호없이.

    추가로 온도 - 바르거나 괄호없이.

        var width= $(this).width(), height= $(this).height()
          , maxWidth=100, maxHeight= 100;
    
        if(width > maxWidth){
          height = Math.floor( maxWidth * height / width );
          width = maxWidth
          }
        if(height > maxHeight){
          width = Math.floor( maxHeight * width / height );
          height = maxHeight;
          }
    

    폭과 높이 속성이 이미지에 맞지 않는 경우 검색 엔진이 그것을 좋아하지 않아,하지만 그들은 JS를 모르는 : 명심하십시오.


  13. 13.약간의 시행 착오 후에 나는이 솔루션에 온 :

    약간의 시행 착오 후에 나는이 솔루션에 온 :

    function center(img) {
        var div = img.parentNode;
        var divW = parseInt(div.style.width);
        var divH = parseInt(div.style.height);
        var srcW = img.width;
        var srcH = img.height;
        var ratio = Math.min(divW/srcW, divH/srcH);
        var newW = img.width * ratio;
        var newH = img.height * ratio;
        img.style.width  = newW + "px";
        img.style.height = newH + "px";
        img.style.marginTop = (divH-newH)/2 + "px";
        img.style.marginLeft = (divW-newW)/2 + "px";
    }
    

  14. 14.크기 조정은 CSS를 이용하여 (종횡비를 유지)를 달성 할 수있다. 이 댄 Dascalescu의 게시물에 의해 영감을 더 간단하게 대답이다.

    크기 조정은 CSS를 이용하여 (종횡비를 유지)를 달성 할 수있다. 이 댄 Dascalescu의 게시물에 의해 영감을 더 간단하게 대답이다.

    http://jsbin.com/viqare

    IMG { 최대 폭 : 200 픽셀; / * 또는 최대 높이를 정의 * / } 알라 스타 쿡 우즈 먼 카와 자


  15. 15.2 단계 :

    2 단계 :

    단계 1) 화상의 원래 폭 / 원래 높이의 비율을 계산한다.

    단계 2) 새로운 원하는 높이에 의해 곱 original_width / original_height 비율은 새로운 높이에 대응하는 새로운 폭을 얻을 수있다.


  16. 16.이 문제는 CSS에 의해 해결 될 수 있습니다.

    이 문제는 CSS에 의해 해결 될 수 있습니다.

    .image{
     max-width:*px;
    }
    

  17. 17.컨테이너에 맞게 비율 제어 아래 배율 인수 규모를 얻을 크기 조정

    컨테이너에 맞게 비율 제어 아래 배율 인수 규모를 얻을 크기 조정

    () {(기능 $ ParentHeight 200 =하자; ParentWidth은 300 =하자; $ ( "# 부모") 폭 (ParentWidth) .height의 (ParentHeight을).; $ ( "# ParentHeight") HTML (ParentHeight).; $ ( "# ParentWidth") HTML (ParentWidth).; VAR RatioOfParent = ParentHeight / ParentWidth; $ ( "# ParentAspectRatio") HTML (RatioOfParent).; ChildHeight = 2000 보자; ChildWidth = 4000을하자; VAR RatioOfChild = ChildHeight / ChildWidth; $ ( "# ChildAspectRatio") HTML (RatioOfChild).; ScaleHeight = ParentHeight / ChildHeight하자; ScaleWidth = ParentWidth / ChildWidth하자; 스케일 = Math.min (ScaleHeight, ScaleWidth)를 보자; $ ( "#의 scaleFactor와") HTML (스케일).; // 오래 된 규모 // ChildHeight = ChildHeight * 스케일링하게하고; // ChildWidth = ChildWidth * 스케일링하게하고; 10 % 규모를 줄일 //, 당신은 비율을 변경할 수 있습니다 ScaleDownPercentage = 10을 보자; 하자 CalculatedScaleValue 스케일 = * (ScaleDownPercentage / 100); $ ( "# CalculatedScaleValue") HTML (CalculatedScaleValue).; // 새로운 규모 NewScale = (스케일 - CalculatedScaleValue)를 보자; ChildHeight = ChildHeight * NewScale; ChildWidth = ChildWidth * NewScale; $ ( "# 아이") 폭 (ChildWidth) .height의 (ChildHeight).; $ ( "# ChildHeight") HTML (ChildHeight).; $ ( "# ChildWidth") HTML (ChildWidth).; }); #부모의 { 배경 색상 : 회색; } #아이 { 배경 색상 : 레드, } <스크립트 SRC = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">

    <표> 부모 종횡비 어린이의 화면 비율 스케일 인자 계산치 스케일 값 부모 높이 부모 품 어린이 높이 어린이 폭


  18. 18.이것은 완전히 드래그 항목에 대한 나를 위해 일한 - aspectRatio : 사실

    이것은 완전히 드래그 항목에 대한 나를 위해 일한 - aspectRatio : 사실

    .appendTo(divwrapper).resizable({
        aspectRatio: true,
        handles: 'se',
        stop: resizestop 
    })
    
  19. from https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio by cc-by-sa and MIT license