Image Remove Perimeter White Space

hh hh at hyperhh.de
Wed Dec 26 19:58:08 EST 2018


Here is a pure LC Script handler from one of my "early" images stacks.
For large images this may become pretty slow...

## CROP image to opaque pixels
on cropIt ft
   put the width of img ft into w; put the height of img ft into h
   put the maskdata of img ft into mData
   put numToByte(0) into c0
   -- left and right transparency limits
   put w into cmin; put 1 into cmax
   repeat with i=0 to h-1
      put i*w into h1
      repeat with j=1 to cmin
         if byte h1+j of mData is not c0 then
            put j into cmin; exit repeat
         end if
      end repeat
      repeat with j=w down to max(cmax,cmin)
         if byte h1+j of mData is not c0 then
            put j into cmax; exit repeat
         end if
      end repeat
   end repeat
   put max(1,cmin-2) into cmin; put min(w,2+cmax) into cmax ## <- +border
   -- top and bottom transparency limits
   put h into rmin; put 1 into rmax
   repeat with j=cmin to cmax
      repeat with i=0 to rmin-1
         if byte i*w+j of mData is not c0 then
            put i into rmin; exit repeat
         end if
      end repeat
      repeat with i=h-1 down to max(rmax,rmin)
         if byte i*w+j of mData is not c0 then
            put i into rmax; exit repeat
         end if
      end repeat
   end repeat
   put max(1,rmin-2) into rmin; put min(h,2+rmax) into rmax ## <- +border
   put (cmax-cmin+1) into w1; put (rmax-rmin) into h1
   put the left of img ft into L; put the top of img ft into T
   crop img ft to L+cmin-1,T+rmin,L+cmax,T+rmax
   -- LC Bug: resizes instead of cropping when image has angle <> 0
end cropIt






More information about the Use-livecode mailing list