Image Manipulation

Visuals, audio, animation. Blended, not stirred. If LiveCode is part of your rich media production toolbox, this is the forum for you.

Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller, robinmiller

teacherguy
Posts: 379
Joined: Thu Dec 08, 2011 2:43 am

Re: Image Manipulation

Post by teacherguy » Sun Feb 05, 2012 4:09 pm

Chris this is really great work, thank you so much

cbodell
Posts: 61
Joined: Wed Nov 09, 2011 7:27 pm

Re: Image Manipulation

Post by cbodell » Sun Feb 05, 2012 6:50 pm

Thank You, Hope you find it useful, keep a look out for the next update. It will have graphic and tool integration, and more customizeable filters options.

cbodell
Posts: 61
Joined: Wed Nov 09, 2011 7:27 pm

Re: Image Manipulation

Post by cbodell » Sat Jun 16, 2012 4:52 am

If anyone is interested in taking part designing a GUI for the PhotoRoom Engine feel free to reply, tools and panels would be integrated, for customization of functions. Feel to email me.

Chris
cbodell@live.com

FourthWorld
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 9823
Joined: Sat Apr 08, 2006 7:05 am
Location: Los Angeles
Contact:

Re: Image Manipulation

Post by FourthWorld » Sat Jun 16, 2012 3:32 pm

Chris, that's quite a compendium of useful handlers. I may be able to use a few of those functions somewhere down the road, but I don't fully understand the About stack's license terms, which says only "Free without reference".

Do you mean "free" as in "public domain", or "free" as in some other license terms?

I would of course at a minimum give credit with "Portions Copyright 2012 Chris Bodell", unless you prefer to use a company name as the copyright holder. If public domain I would be happy to use "Portions contributed to the public domain by Chris Bodell".

How would you like attribution, and do you take PayPal donations? If I use some of this I'll at least kick in for dinner. :)
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn

cbodell
Posts: 61
Joined: Wed Nov 09, 2011 7:27 pm

Re: Image Manipulation

Post by cbodell » Sun Jun 17, 2012 12:53 am

Hi Fourth World,

That was the quickest way i could write out the "About" stack for an update. I actually provide if free to the public, no reference meaning you don't have to reference me as the owner, writer. I would take paypal, but i would prefer it be used anyway, instead of sitting on a hard drive. Donations are your choice.

I began writing the stack because i wanted to design different grayscale methods. But i got a little side tracked. Anyway, use it as you need, i would love to see a good application base for it.

Chris

FourthWorld
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 9823
Joined: Sat Apr 08, 2006 7:05 am
Location: Los Angeles
Contact:

Re: Image Manipulation

Post by FourthWorld » Sun Jun 17, 2012 1:08 am

For PayPal, would I use the email address in the About box?

As for the code, it's great stuff but there may be some opportunities for speed improvement in the repeat loops, since many use "repeat with..." where "repeat for each..." would be faster.

It's a bit tricky in the places you're using it, since you need to follow specific bounds that relate to the image coordinates. Not a simple optimization, but if I get some somewhere down the road when I get a chance to use it I might try my hand at seeing if there's an efficient way to refactor those repeats to use the parse-as-it-goes "repeat for each..." method.

And if I do, of course I'll honor the generous spirit in which you've shared this massive library and post them as public domain which you could include in the master copy if you choose to.

If anyone else here has time to explore that I'd be interested in how it goes. I'm fairly certain those loops can be sped up, but given the constraints they address it's not as obvious as many other optimizations.
Richard Gaskin
LiveCode development, training, and consulting services: Fourth World Systems
LiveCode Group on Facebook
LiveCode Group on LinkedIn

cbodell
Posts: 61
Joined: Wed Nov 09, 2011 7:27 pm

Re: Image Manipulation

Post by cbodell » Sun Jun 17, 2012 2:06 am

It's cbodell@live.com. Im not quite sure if i have the correct one listed.

About the speed improvement, most of the filters can easily be switched the repeat for each, i actually spent a couple of weeks doing that. When it gets to the more complex structures, it gets a bit more tricky to track down the errors, but for the most part, as long as dimension presets are stated in the calls, it's quite simple. I designed some graphic tools and Bézier curves with point mainupulation, and had some neat pen & marker tools, layer and history, but in my last move, i lost the drive that had the backup, and accidently deleted the formal copy. It's a shame, i was looking forward to the release.

Im actually working with trials versions, so i have to constantly inquire for a new license file. As soon i can invest in a license i'm going to get back to work. It's time consuming when i'm designing alone though.

As for the optimazation again, most of the filters i remodeled the repeat structure of increases but a couple of seconds. Some of the other functions like flakes, tiles, water drops, etc can be optimized dramatically. Writing them so fast i didn't include boundary statements and conditional operations, so if an iteration is outside the boundaries and the code has to loop, or pixel location is invalid, the time for the filter is almost literally doubled. One i improved from 17 seconds to 4. The tile filters i believe.

Anyway, i'm going to dive back into the code soon, and give the engine an overhaul, once i redesign the GUI ill post the next major update.

I'd also like to add brush effects for a custom brush tool, but i need to design a stamp-like function, that's efficient in tracking the mouseLoc. Any ideas or leads for a good start would be great.

Chris

jmburnod
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 2718
Joined: Sat Dec 22, 2007 5:35 pm
Location: Genève
Contact:

Re: Image Manipulation

Post by jmburnod » Sun Jun 17, 2012 9:25 pm

Hi Chris,
i need to design a stamp-like function, that's efficient in tracking the mouseLoc. Any ideas or leads for a good start would be great.
If i understand what you want, "SimplePaint" should be useful for your project (I'm not the author).
Simplepaint work with the imagedata and you can draw without revpaint tools

You can download it here (307 ko):
http://www.alternatic.ch/jmb/DevLiveCod ... ePaint.zip

Best regards

Jean-Marc
https://alternatic.ch

bn
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 3999
Joined: Sun Jan 07, 2007 9:12 pm
Location: Bochum, Germany

Re: Image Manipulation

Post by bn » Sun Jun 17, 2012 10:46 pm

Hi Chris,
I'd also like to add brush effects for a custom brush tool, but i need to design a stamp-like function, that's efficient in tracking the mouseLoc. Any ideas or leads for a good start would be great
have a look at this thread and the alpha_paint stack of Luisa Klose
http://forums.runrev.com/phpBB2/viewtop ... =30#p43129
Kind regards

Bernd

cbodell
Posts: 61
Joined: Wed Nov 09, 2011 7:27 pm

Re: Image Manipulation

Post by cbodell » Mon Jun 18, 2012 11:55 pm

Hi Bernd & Jean-Marc,

Are these stacks/samples something i can use and alter? Do i need to use a reference to the author? And are they efficient enough to keep up with the mouseLoc tracking at variable speeds? I'm on a business computer so ill have a look when i get home, i think i've ran into the alpha_paint stack before. I'll have a look though.

Thank You

Chris

jmburnod
VIP Livecode Opensource Backer
VIP Livecode Opensource Backer
Posts: 2718
Joined: Sat Dec 22, 2007 5:35 pm
Location: Genève
Contact:

Re: Image Manipulation

Post by jmburnod » Wed Jun 20, 2012 12:30 am

Hi Chris,

Sorry. I don't know who is the author of simple paint

Best regards

Jean-Marc
https://alternatic.ch

Dixie
Livecode Opensource Backer
Livecode Opensource Backer
Posts: 1336
Joined: Sun Jul 12, 2009 10:53 am
Location: Bordeaux, France

Re: Image Manipulation

Post by Dixie » Wed Jun 20, 2012 1:51 am

Chris, Jean-Marc...

I think that Colin Holgate was the author of 'simple paint'...

be well

Dixie

teacherguy
Posts: 379
Joined: Thu Dec 08, 2011 2:43 am

Re: Image Manipulation

Post by teacherguy » Sun Jul 01, 2012 6:13 pm

Looking at for example the autobrighten handler, is that one that could be converted to "for each?" Would love to see that get a little speed bump!

Code: Select all

function addFilter_AutoBrighten pImage,pStyle,pStyle2,tAmount
   if pImage is empty then exit to top
   put the imageData of pImage into tData
   put the width of pImage into pWidth
   put the height of pImage into pHeight
   repeat with y = 1 to pHeight
      repeat with x = 1 to pWidth
         put charToNum(char ((y - 1) * pWidth * 4) + ((x - 1)  * 4) + 2 of tData) into tRed
         put charToNum(char ((y - 1) * pWidth * 4) + ((x - 1)  * 4) + 3 of tData) into tGreen
         put charToNum(char ((y - 1) * pWidth * 4) + ((x - 1)  * 4) + 4 of tData) into tBlue
         put (tRed + tGreen + tBlue)/3 into pHold
         put pHold/255 into tPercent
         put (tAmount*2) * tPercent into pHold
         put pHold - tAmount into pHold
         if pStyle is "1" then
            --Adjust High & Low Levels
            put pHold into pHold
         else if pStyle is "2" then
            --Adjust High Levels Only
            if (pHold < 0) then
               put 0 into pHold
            end if
         else if pStyle is "3" then
            --Adjust Low Levels only
            if (pHold > 0) then
               put 0 into pHold
            end if
         end if
         
         put the round of (16 + ((.183 * tRed) + (.614 * tGreen) + (.062 * tBlue))) into tY
         put the round of (128 + (((-.101) * tRed) + ((-.339) * tGreen) + (.439 * tBlue))) into tCb
         put the round of (128 + ((.439 * tRed) + ((-.339) * tGreen) + ((-.040) * tBlue))) into tCr
         if pStyle2 is 1 then 
            add pHold to tY
         else if pStyle2 is 2 then
            subtract pHold from tY
         end if
         put the round of ((1.164 * (tY - 16)) + (0.000 * (tCb - 128)) + (1.793 * (tCr - 128))) into tRed
         put the round of ((1.164 * (tY - 16)) + ((-0.213) * (tCb - 128)) + ((-0.533) * (tCr - 128))) into tGreen
         put the round of ((1.164 * (tY - 16)) + (2.112 * (tCb - 128)) + (0.000 * (tCr - 128))) into tBlue
         if tRed < 0 then put 0 into tRed
         if tGreen < 0 then put 0 into tGreen
         if tBlue < 0 then put 0 into tBlue
         if tRed > 255 then put 255 into tRed
         if tGreen > 255 then put 255 into tGreen
         if tBlue > 255 then put 255 into tBlue
         put numToChar(tRed) into char (((y - 1)) * pWidth * 4) + (((x - 1))  * 4) + 2 of tData
         put numToChar(tGreen) into char (((y - 1)) * pWidth * 4) + (((x - 1))  * 4) + 3 of tData
         put numToChar(tBlue) into char (((y - 1)) * pWidth * 4) + (((x - 1))  * 4) + 4 of tData
      end repeat
      
   end repeat
   set the imageData of pImage to tData
   return "Render Complete!"
end addFilter_AutoBrighten

cbodell
Posts: 61
Joined: Wed Nov 09, 2011 7:27 pm

Re: Image Manipulation

Post by cbodell » Sun Jul 08, 2012 12:25 am

Teacherguy,

Yes, it definitely could have a speed boost, ill give that filter and overhaul and get back to you as soon as i can.

Chris

teacherguy
Posts: 379
Joined: Thu Dec 08, 2011 2:43 am

Re: Image Manipulation

Post by teacherguy » Sun Jul 08, 2012 12:25 pm

Thanks!!!!! :D

Post Reply

Return to “Multimedia”