New to Get a Copy of Scaled Down Version of an Image

Sannyasin Brahmanathaswami brahma at
Wed Oct 28 07:04:17 EDT 2020

Take for example

[command] resizeToWidth tImage, 400

on resizeToWidth pImage,pSize
   local tOrigImgWidth, tOrigImgHeight, tRatio, tNewWidth, tNewHeight
   set the itemdel to "x"
   put item 1 of sCurrentGraphicRect into tOrigImgWidth
   put item 2 of sCurrentGraphicRect into tOrigImgHeight

   if tOrigImgWidth is 0 then exit resizeToWidth

   put pSize/tOrigImgWidth into tRatio
   put (tOrigImgHeight * tRatio) into tNewHeight
   put (tOrigImgWidth * tRatio) into  tNewWidth

   set the rect of  pImage to 0,0,tNewWidth,tNewHeight

end resizeToWidth

How do I get a copy, with the image scaled down, which is visible on screen?

  if (the width of tImage > the heigth of tImage )  then
      # portrait
      resizeToWidth tImage, 400
      # landscape
      resizeToHeigth tImage, 400
   end if

   # now we set the img to the img "currentpuzzle"
   set the name of the last image to "currentpuzzle"

   # and copy the data, at 400px wide
   put the rect of the last image into tImageData["rect"]
   put the imageData of the last image into tImageData["image"]

   put tImageData["image"] into image "currentpuzzle"

   BUT the full scaled copy of the image "currentpuzzle" comes into view. I wanted to get a scaled down version?

How do we implement this, from the dictionary

The imageData, unlike the contents of the image<lcs,image,> container<lcs,container,>, is based on the picture as it's presented on the screen, not stored in the image<lcs,image,> object<lcs,object,glossary>. This means that if you resize an image<lcs,image,>, the content of the image<lcs,image,> does not change, but its imageData does. If you create an image<lcs,image,> and then reduce its size, its imageData reflects the scaled-down, displayed image<lcs,image,>, not the original full-scale image<lcs,image,>. If you create a second image<lcs,image,> and set its imageData property<lcs,property,> to the imageData of the original image<lcs,image,>, resizing the first image<lcs,image,> back to the original dimensions displays the original image<lcs,image,> at full resolution, but resizing the second image<lcs,image,> does not, because setting its imageData transferred only the scaled-down version of the original.


More information about the use-livecode mailing list