Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Resize SMALLEST image dimension [duplicate]

This seems like something that would've been asked before but I can't find the duplicate so...

I want the smallest dimension of an image to be scaled max 200 while keeping aspect ratio. So:

  • A 600x400 image has smallest dimension 400, which should be 200 so scale by 0.5: new image will be 300x200
  • Similarly 400x800 will be 200x400
  • The smallest dimension for 100x300 is already < 200 so it will remain 100x300.

Obviously if it can be done with css then that is preferred over javascript.

like image 238
Mark Avatar asked Oct 21 '22 12:10

Mark


1 Answers

Yep, you'll need JS:

LIVE DEMO

function scale(W, H, max) {
  var min = Math.min(W, H),        // Get the smallest size
      nr  = min>max,               // NeededResize (Boolean)
      rat = Math.min(max/W, max/H);// Ratio
  return {
    W: nr?W*rat:W, // if NeededResize do W*rat, else just use the image W
    H: nr?H*rat:H
  };
}

// Use like: scale(imageWidth, imageHeight, maxSizeToRespect);
var resize = scale(this.width, this.height, 200);
// Where from now on
resize.W // is the returned width scale
resize.H // is the returned height scale
like image 85
Roko C. Buljan Avatar answered Oct 23 '22 03:10

Roko C. Buljan