Pages: 1 2 3 [4] 5 6 7 ... 11   Go Down
Send this topic | Print
Author Topic: Imagine-ng -- the Javascript Photomanipulator  (Read 27311 times)
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #60 on: July 19, 2007, 04:54:54 AM »

You wouldn't have to if it were opensource ;] Anyway, Java's a good platform. It doesn't load fast enough... then again, very few of the bloated apps out there load quickly. lol.
Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #61 on: July 19, 2007, 06:26:45 AM »

You wouldn't have to if it were opensource ;] Anyway, Java's a good platform. It doesn't load fast enough... then again, very few of the bloated apps out there load quickly. lol.
-especially runtimes.


Well see, most people don't bother using an application unless a binary is out there.
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #62 on: July 19, 2007, 03:34:01 PM »

Yes, but if someone is using some obscure version of *nix, or something else... chances are, most of the other apps would be in source form. No big loss here =p

Anyway. I've implemented the blending mode chooser, the opacity spinner, and the layer chooser. It should work for now, until I figure out a nice way to change the z-index of layers... Drag+drop seems to be a bit more difficult to implement; I think I'm going to have to subclass some stuff.
Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #63 on: July 20, 2007, 12:12:38 AM »

Yes, but if someone is using some obscure version of *nix, or something else... chances are, most of the other apps would be in source form. No big loss here =p

Anyway. I've implemented the blending mode chooser, the opacity spinner, and the layer chooser. It should work for now, until I figure out a nice way to change the z-index of layers... Drag+drop seems to be a bit more difficult to implement; I think I'm going to have to subclass some stuff.
Another idea is to port paint.net (http://getpaint.net) to java, since you can convert c# to j# to java
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #64 on: July 20, 2007, 02:16:27 AM »

Hm, actually, I can get some nice ideas off Paint.NET. I can't actually run this stuff, though. I might need to get Mono or something. Besides, converting is not nearly as much fun as actually doing this stuff from scratch =p
Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #65 on: July 20, 2007, 02:53:39 AM »

Hm, actually, I can get some nice ideas off Paint.NET. I can't actually run this stuff, though. I might need to get Mono or something. Besides, converting is not nearly as much fun as actually doing this stuff from scratch =p
well i'm a lazy programmer so i'll do anything to convert.

Well at least you can copy some source off paint.net, it's made in c#, a language that looks pretty much the same as java

Ok so you run a *nix system?

What's weird about me, is i have around 20 linux distros, and i always insult microsoft/windows anytime possible, but I still use xp as my main os...
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #66 on: July 20, 2007, 03:39:38 AM »

Well, if you didn't use WinXP, you would not see any reason to insult it wink
Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #67 on: July 20, 2007, 06:12:19 AM »

Well, if you didn't use WinXP, you would not see any reason to insult it wink
yeah, but now i focus on insulting vista (i use it when i have to... and only then)
most people say oooh, vista is no worse than xp. but that's just because most PCs running xp are running with specs exponentially more than the requirements, so almost all speed is already maxed out, windows vista, however, distracts you from it's real slowness (which afik can not be disabled ) by eyecandy (much worse than beryl/compiz though) and that it's requirements are SOOO high, any computer that can even RUN it would seem fast even for the slowest possible os (which is vista...) especially during demos where the most cpu intensive app they show is windows notepad, for mono-tasking, and most people who even say vista's fast, are such idiots they don't know how to change a file's extension!
okay, so i'm done with my under-egzagerated rant against vista.

Well, I think you should try SWT. (standard widget toolkit) it's supposed to give the look and feel of a native application (which I prefer over the other stuff) and because it's possible to convert to a web based thing. Or since you like netbeans and a swing-like interface, you can try the netbeans visual web pack, which looks like swing, and runs java, and converts into ajax.

You could also try migrating part of your project to vector graphics since they are cool. And because part of (the overly bloated) photoshop uses vector objects, and it might make some things like selecting sections and moving them easier

I also recomend getting some sort of source hosting system (git is endorsed by linus torvalds and runs the kernel since linus made git, subversion because I use it, or cvs because sourceforge uses it). Having one makes it easier to keep track of stuff and allows multiple people to cooperate on one project, and makes it easier to upload (i think there is a php script that updates files on the server from data on a subversion server). And i have for my project in effort to get others to contribute to my project.
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #68 on: July 20, 2007, 02:59:27 PM »

A source hosting system would be extremely helpful... Thanks for the tip...

As for SWT... I've checked it out, but I'm put off by the difficulty of subclassing some simple controls. If they're just wrappers around native controls, it requires a lot more work to extend them. Of course, one can still write components in pure Java... but that's why we have Swing. SWT is also not as portable, and I kind of want a consistent appearance across platforms. That's why I chose Swing over SWT =p

(dude. i just tried compiz-fusion. it's mad hot.)
Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #69 on: July 21, 2007, 11:55:05 PM »

A source hosting system would be extremely helpful... Thanks for the tip...

As for SWT... I've checked it out, but I'm put off by the difficulty of subclassing some simple controls. If they're just wrappers around native controls, it requires a lot more work to extend them. Of course, one can still write components in pure Java... but that's why we have Swing. SWT is also not as portable, and I kind of want a consistent appearance across platforms. That's why I chose Swing over SWT =p

(dude. i just tried compiz-fusion. it's mad hot.)
So is there any progress on this project so far?

You're welcome.

I didn't know that SWT was just a bunch of native wrappers. I thought it was just like swing.

How do you get compiz-fusion?? I don't think they even merged yet.
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #70 on: July 22, 2007, 06:04:00 AM »

There's been some progress -- I've been subclassing Swing stuff, so while the appearance hasn't changed much, I'm working on making each widget more useful. Something else that I have to fix is the order of the layer display. Normally, layers on top appear on top in the list. Currently, they're displayed in index order, so they're on the bottom. It should be a simple matter to fix -- just subclass the renderer and invert the indices when displaying.

Also, the visibility button of each layer needs to be clickable. This has been a real pain to fix.
Then it would be nice if the layers could be reindexed using drag+drop.

Compiz fusion, hehehe... Actually, it's not an official package; I had to get it off someone's homebrew repository. I like Compiz, but I also like Beryl's Emerald window decorator. So I'm using Emerald with Compiz.
« Last Edit: July 22, 2007, 06:06:53 AM by inportb » Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #71 on: July 22, 2007, 06:11:54 AM »

There's been some progress -- I've been subclassing Swing stuff, so while the appearance hasn't changed much, I'm working on making each widget more useful. Something else that I have to fix is the order of the layer display. Normally, layers on top appear on top in the list. Currently, they're displayed in index order, so they're on the bottom. It should be a simple matter to fix -- just subclass the renderer and invert the indices when displaying.

Also, the visibility button of each layer needs to be clickable. This has been a real pain to fix.
Then it would be nice if the layers could be reindexed using drag+drop.

Compiz fusion, hehehe... Actually, it's not an official package; I had to get it off someone's homebrew repository. I like Compiz, but I also like Beryl's Emerald window decorator. So I'm using Emerald with Compiz.
Great, but are you ever going to edit the "AJAX" Photomanipulator?
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #72 on: July 23, 2007, 04:53:13 AM »

Oh, it's going to be AJAX, alright... Asynchronous Java and XML... This is what the 110mb.com website is going to be for =p  If you were asking about this program's progenitor... no, I don't see it being updated anytime soon. I do intend to give this project to one of my associates, for practice.

I'm going to follow your example and make a login system, but the signup/login form will be in the Swing GUI. And I think it might be a good idea to include that XHTML+CSS+SVG renderer, to show online help and such...

Meanwhile, the layer display system is workable. The blending is still a bit too slow for realtime interaction, but I expect switching to fixed-point math would speed everything up. It's still pretty fast though... just not quite up to par. You can now toggle the visibility of a layer by manipulating its checkbox. And you can change a layer's name by double-clicking on its name. The next logical step would be drag+drop reindexing. Nope, that is too hard for now. I just added buttons for moving up, down, to top, and to bottom. Yay for homebrew pixel graphics!
Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #73 on: July 24, 2007, 10:55:55 PM »

Oh, it's going to be AJAX, alright... Asynchronous Java and XML... This is what the 110mb.com website is going to be for =p  If you were asking about this program's progenitor... no, I don't see it being updated anytime soon. I do intend to give this project to one of my associates, for practice.

I'm going to follow your example and make a login system, but the signup/login form will be in the Swing GUI. And I think it might be a good idea to include that XHTML+CSS+SVG renderer, to show online help and such...

Meanwhile, the layer display system is workable. The blending is still a bit too slow for realtime interaction, but I expect switching to fixed-point math would speed everything up. It's still pretty fast though... just not quite up to par. You can now toggle the visibility of a layer by manipulating its checkbox. And you can change a layer's name by double-clicking on its name. The next logical step would be drag+drop reindexing. Nope, that is too hard for now. I just added buttons for moving up, down, to top, and to bottom. Yay for homebrew pixel graphics!
waaa! I imported a picture and my pc crashed. (maybe because i was running windows evil)

I like the new ui, and the functionality. Try stealing source from paint.net
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #74 on: July 25, 2007, 12:04:44 AM »

oh snap. now that you know my evil plans, I have to go hide somewhere shocked

but seriously, though. I just started checking the console for suspicious error output. Is this crash reproducible?

The current version lets you drag layers around with your mouse. It's quite jerky. I have to either fix the mouse motion handler to smooth things out or make the blending faster. I'd much rather optimize the blender, but it'd make the code a lot more messy... it makes an avoidable function call per pixel, but Java simply refuses to inline that function call...

I'm also working on a semi-proprietary PNG extension for storing multiple layers. Proprietary because I find it too difficult to implement the open standards (actually, there are no open standards when it comes to PNG metadata). Semi because I'm releasing this stuff to the public domain wink
Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #75 on: July 25, 2007, 01:57:35 AM »

oh snap. now that you know my evil plans, I have to go hide somewhere shocked

but seriously, though. I just started checking the console for suspicious error output. Is this crash reproducible?

The current version lets you drag layers around with your mouse. It's quite jerky. I have to either fix the mouse motion handler to smooth things out or make the blending faster. I'd much rather optimize the blender, but it'd make the code a lot more messy... it makes an avoidable function call per pixel, but Java simply refuses to inline that function call...

I'm also working on a semi-proprietary PNG extension for storing multiple layers. Proprietary because I find it too difficult to implement the open standards (actually, there are no open standards when it comes to PNG metadata). Semi because I'm releasing this stuff to the public domain wink
well maybe the crash was because I was installing ie7 (it sucks i know-I still <3 firefox) at the time-and hacking my registry.

the jerkyness might because it's in java... (sorry, i'm not a real fan of java-too many failed attempts to port the .net framework to java)
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
Youj Ying
Member
*
Offline Offline

Posts: 47


« Reply #76 on: July 25, 2007, 03:21:59 AM »

What's weird about me, is i have around 20 linux distros, and i always insult microsoft/windows anytime possible, but I still use xp as my main os...

hmm wonder why? might be because the only things that work correctly are on windows :O, Say you wanted to play a game, but guess what they only make it for windows :O


what you should add to your site is the ability to choose server side scripting or client side. and theres these xhtml errors poping up when i try to distort.
Logged
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #77 on: July 25, 2007, 03:26:29 AM »

What's weird about me, is i have around 20 linux distros, and i always insult microsoft/windows anytime possible, but I still use xp as my main os...

hmm wonder why? might be because the only things that work correctly are on windows :O, Say you wanted to play a game, but guess what they only make it for windows :O


what you should add to your site is the ability to choose server side scripting or client side. and theres these xhtml errors poping up when i try to distort.
Actually i'm not a gamer. I actually would buy a PSP just to hack it grin

inportb isn't working much on the actual site much anymore. try out his java web start "port"

imagine.inportb.com/javaws
Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
inp o҉rtb
The Gangsta
Global Moderator
Official 110mb Guru
*****
Offline Offline

Posts: 15642


experimental theologian


WWW
« Reply #78 on: July 25, 2007, 07:53:51 AM »

Ah, well if it's going to be serverside, then it cannot distinguish itself from the other proggies out there that _are_ serverside. There is much less interactivity and whatnot. Most people who have problems with the program have less than optimal Internet connections, so I also recommend the Java version, which is under development. All processing is currently done on the client in the Java version.

I have developed a quasi-stable layered file format on top of PNG. When you save your layered image as a PNG (currently the only supported output format), you get an image that can be read by all PNG-capable programs. That is basic. But when you open the file in Imagine-Java, Imagine recognizes all the layers and restores them for you.

How does this work? Simple -- stuff all the layer information into the file as metadata. The only problem with this approach is that PNG metadata is based on an XML document. I had lots of fun fiddling with PNG's DOM, but finally managed to put the data into a text node, which is the only thing that is anywhere near standard. However, you can't just stuff binary data into an XML document, because it's going to break it. So I base64-encoded that data too... You might notice that you end up with a bigass image file -- base64-encoding has a 33% overhead. Now, if you only had one layer, Imagine won't write the metadata, giving you a nice and small PNG.

This method can be extended to support adjustment layers and even *gasp* vector graphics shocked

By the way, I tried again to go for a quasi-open quasi-standard... It's here -- http://java.sun.com/j2se/1.4.2/docs/api/javax/imageio/metadata/doc-files/png_metadata.html
« Last Edit: July 25, 2007, 07:57:22 AM by inportb » Logged

Hi! I’m a signature virus! Add me to your signature to help me spread.
spam me: ispamspot@gmail.com

blog | my work @ deviantART | Imagine-ng image editor
antimatter15
Loyal 110MB Member
*******
Offline Offline

Posts: 4084


WWW
« Reply #79 on: July 25, 2007, 09:24:29 AM »

Ah, well if it's going to be serverside, then it cannot distinguish itself from the other proggies out there that _are_ serverside. There is much less interactivity and whatnot. Most people who have problems with the program have less than optimal Internet connections, so I also recommend the Java version, which is under development. All processing is currently done on the client in the Java version.

I have developed a quasi-stable layered file format on top of PNG. When you save your layered image as a PNG (currently the only supported output format), you get an image that can be read by all PNG-capable programs. That is basic. But when you open the file in Imagine-Java, Imagine recognizes all the layers and restores them for you.

How does this work? Simple -- stuff all the layer information into the file as metadata. The only problem with this approach is that PNG metadata is based on an XML document. I had lots of fun fiddling with PNG's DOM, but finally managed to put the data into a text node, which is the only thing that is anywhere near standard. However, you can't just stuff binary data into an XML document, because it's going to break it. So I base64-encoded that data too... You might notice that you end up with a bigass image file -- base64-encoding has a 33% overhead. Now, if you only had one layer, Imagine won't write the metadata, giving you a nice and small PNG.

This method can be extended to support adjustment layers and even *gasp* vector graphics shocked

By the way, I tried again to go for a quasi-open quasi-standard... It's here -- http://java.sun.com/j2se/1.4.2/docs/api/javax/imageio/metadata/doc-files/png_metadata.html
I remember a way to hide files in other files that are completely readable-natively by all supported applications.
yeah.. it's all comming back....

It's designed for the rar format, but after (painful) testing, i discovered it also  works with the 7zip format. And 7zip is open, and supported by java.

it bascially combines two files in a binary level (example for windows users...)
copy /b compiledimg.png + source.7z comboimg.jpg

that way, the image is readable with the normal viewing apps, yet can be read fully by your app.

I might use this format for my app (ajax animator...)

copy /b compiledanimation.swf + animationxmlsrc.zip outanim.swf

Logged

Ajax Animator, a web-based, collaborative animation authoring environment with Flash, Silverlight, and GIF export.
Pages: 1 2 3 [4] 5 6 7 ... 11   Go Up
Send this topic | Print
Jump to: