Scaling Imported Images

hh hh at hyperhh.de
Tue Aug 20 07:01:30 EDT 2019


> Bob S. wrote:
> I seem to remember some time ago there was a key combination
> so that when you sized an image, instead of cropping it, it
> would scale it. Am I imagining things? I can create a new
> scaled image in Preview, so no big deal. 

Resizing with the pointer tool has these modifier specials:

use with shift  => resizes proportional
use with option => resizes to square
use with mac-cmd/win-nux-ctrl => crops

Posssibly this is not what you want, because this operation only
changes the display, not the size of the original imported image.
So the size of the image in the stack is always the same.

To make the *new size* to be 'persistent', that is
new width => formattedWidth and new height => formattedHeight
use

set imagedata of img imgName to the imagedata of img imgName

Here is the complete script I use for scale or fit incl. the above.

-- pRetain is true or false (=persistence of new size)
-- pImgID is the long id of an image
-- pHow is one of f[actor],w[idth],h[eight],l[arger],s[maller],?
-- pVal is a positive Number
on scaleOrFitImage pRetain,pImgID,pHow,pVal
  lock screen; lock messages
  put the formattedWidth of pImgID into w
  put the formattedHeight of pImgID into h
  switch char 1 of pHow
    case "f" -- scale with factor pVal
      put pVal*w into w0
      put pVal*h into h0
      break
    case "w" -- fit width to pVal
      put pVal*h/w into h0
      put pVal into w0
      break
    case "h" -- fit height to pVal
      put pVal*w/h into w0
      put pVal into h0
      break
    case "l" -- fit max(width,height) to pVal
      if h > w then -- fit height to pVal
        put pVal*w/h into w0
        put pVal into h0
      else -- fit width to pVal
        put pVal*h/w into h0
        put pVal into w0
      end if
      break
    case "s" -- fit min(width,height) to pVal
      if h < w then -- fit height to pVal
        put pVal*w/h into w0
        put pVal into h0
      else -- fit width to pVal
        put pVal*h/w into h0
        put pVal into w0
      end if
      break
    default -- current width and height
      put the width of pImgID into w0
      put the height of pImgID into h0
      break
  end switch
  put the topleft of pImgID into TL
  set width of pImgID to w0
  set height of pImgID to h0
  set topleft of pImgID to TL
  if pRetain then
    # width => formattedWidth and height => formattedHeight
    set imagedata of pImgID to the imagedata of pImgID
  end if
end scaleOrFitImage




More information about the Use-livecode mailing list