7 ms·
Psd.rb
- envex 13y agoI feel like this could be used to automatically convert a simple .psd web layout to non-shitty HTML and CSS.
- meltingice 13y agoThere is certainly the potential for that. The library still has a little ways to go until that's possible. If anything, I think it would be a cool project to build on top of PSD.rb instead of bloating the core library.
- gnufied 13y agoLook up markupwand.com an YC alumni. The problem is harder than it looks. Now, I am not an expert in PSD format but a PSD that can be automatically converted to HTML has to be specifically formatted. For example, if you merge text layers with image layers, it becomes difficult to extract the information.
- envex 13y agoThat's true. Ideally, you'd have to spend some time making sure your .psd is formatted properly instead of just 100 layers names Layer X.
- pestaa 13y ago> The problem is harder than it looks. markupwand.com is pivoting...
- thesunny 13y agoWe've actually solved this and will be launching in about a week. We've been working on it for over a year now. It runs inside Photoshop (there is no upload stage nor do you have to open up separate software) and it generates HTML and CSS that looks like a designer wrote it and slices up all your images. It also outputs LESS, SASS, HAML, Slim, Jade and I think there are some other formats I may be forgetting. Text is output as text. If you use a Google font, it automatically links the fonts in for you. It does not use absolute positioning so if you modify things like text and it grows taller or shrinks shorter, other items will be positioned properly (initially we did it with absolute positioning but later I figured out an algorithm to make it work the way it should, even with overlapping elements). It's definitely not an easy problem to solve (hence why we've been working on it for over a year although not full time). We've done some outputs now and the results are amazing. I would link you to the website but it looks so bad right now that I don't want to show it. Anyways, we will launch in about a week so look for an announcement. If you have any questions about it, please leave a comment. Sunny
- tluyben2 13y agoThere are a bunch of those tools which run inside PS, but the point is that I really don't want to run PS. Ever. My designers do and now I have to pay / upgrade licenses too because there is no solution. I think PS is overused and abused for anything 'design' while for programmers it's an annoyance more often than not.
- gnufied 13y agoAwesome.We own bunch of CC licenses and I am happy to beta test, if you guys want. :-)
- tlrobinson 13y agoCSS Hat gets you part way there: https://csshat.com/ https://csshat.com/
- smtm 13y agoSo, will there be writing .PSD files as well? This would be the über thing. Imagine: upload a .PSD and get back a clean HTML layout + bootstrap_overrides.css
- kellysutton 13y agoThe library supports some writing, but it's mostly limited to translating/scaling layers.
- mistercow 13y ago>So, will there be writing .PSD files as well? Writing PSD files is considerably easier than reading them. To write, you need only support the features you actually use. To read, you must support everything. For example, Photoshop always saves its layers RLE compressed (or it did when I last wrote code to write PSD files, which was about five years ago), but the format supports uncompressed layer data just fine. So if you're just trying to get basic interoperation with Photoshop, you don't have to worry about RLE at all. >Imagine: upload a .PSD and get back a clean HTML layout + bootstrap_overrides.css Why would that require writing .PSD files?
- smtm 13y agoWell, so you could iterate on your design - and pick up the changes made in CSS back into the design PSD. And work onwards from there
- FuzzyDunlop 13y agoTo be fair, if you wanted to convert a PSD to HTML the last thing you'd need is Bootstrap.
- freerobby 13y agoGreat work and thanks for building this. There's a lot of room for improvement in automating manipulative photoshop exports, and I look forward to seeing what people do with this, especially in terms of building command line tools.
- mistercow 13y ago>Adobe has never produced an easy way for developers to work with the format. That's not entirely fair. Adobe has openly released a comprehensive description of the format which is, as far as I know, accurate. The problem is that the format itself is a heap of features piled on year after year with apparently no regard for doing things consistently.
- meltingice 13y agoThe file spec released by Adobe (http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/ http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/) is actually outdated, wrong in some places, and can be incredibly vague at times.
- Zev 13y agoI can't speak to its accuracy, but, June 2013 wasn't yesterday. It isn't that old -- and it isn't like there's been a release of Photoshop in the past month and a half, so, it seems pretty recently updated.
- ricardobeat 13y agorecent publish date != up-to-date content
- ejstronge 13y agoA bit off-topic, but is there a spec for Illustrator files? It seems the only one I see on Google is from an old version of AI...
- kellysutton 13y agoNot yet, but there's always next week...
- scardine 13y agoSome AI files can read as PDF (try to rename them and see if your reader can open it).
- artagnon 13y agoThis programmer has written about the PSD format in colorful detail: "Trying to get data out of a PSD file is like trying to find something in the attic of your eccentric old uncle who died in a freak freshwater shark attack on his 58th birthday." https://code.google.com/p/xee/source/browse/XeePhotoshopLoader.m#108 https://code.google.com/p/xee/source/browse/XeePhotoshopLoad... (ref: first link in the article)
- aftermathvc 13y agoawesome!
- tommoor 13y agoWow, fantastic work and a lot of respect for open sourcing this lib when it's clearly an important part of LayerVault.
- gburt2 13y agoI just wrote a script with this that takes a directory of PSDs and outputs PNGs for each one. It took about 2 minutes. This is great.
- justinator 13y agoWow, everything old, is new again ;) I think with an actual copy of Photoshop, and a little Applescript, this is something you could have done > 15 years ago.
- sejje 13y agoSo maybe what's great is avoiding the cost of Photoshop, which many have found to be outrageous.
- gurvinder 13y agoYes, but now you can do it without having a copy of Photoshop.
- jdboyd 13y agoBut this way I don't have to keep paying $20/mo to Adobe CC so that I can run the script again next month.
- jlgreco 13y agoI suspect that you could probably also manage it with GIMP/guile, but I don't suspect it would be particularly pleasant.
- _delirium 13y agoIf you want to script it, ImageMagick or GraphicsMagick are probably a better bet than trying to hack up something with GIMP batch processing: http://www.imagemagick.com/www/formats.html http://www.imagemagick.com/www/formats.html If you just want to do basic conversion ignoring layers, it's quite easy: for f in *.psd; do convert "$f" "${f%%.psd}.png" done
- isaacjohnwesley 13y agoTruly awesome, cant wait to think of the possibilities with this.
- carlosdp 13y agoThank you! There's quite a ton I can do to this. Will definitely be contributing soon.
- nja 13y agoDoes anyone know of a similar tool for Python? Not trying to start a Ruby/Python fight or anything; Python just happens to be my preferred language.
- sjtgraham 13y agoJust use Ruby for this. I prefer Ruby, but there are times I will pick Python instead because it has better libs for what I need to do, e.g. numerical and scientific libs.
- hoov 13y ago"Just use Ruby" isn't always the best option; if you have a large base of Python code, it's probably preferable to use Python directly rather than using the subprocess module. Also, a port would be fairly straightforward. Some combo of the struct/ctypes modules (depending on how complicated the data structures are) would make a transliteration pretty simple.
- sjtgraham 13y agoA "large base of Python code" would not be my main reason for eschewing other languages: - Unfortunately psd.py doesn't seem to exist. Tell me, what is less effort: Implementing that, or building a small app/service that performs the functionality you need using existing tools? - Also I'd consider the suitability of a given technology before this too, e.g. on my current project there is a lot of Ruby code, but it's a major bottleneck in one of our services performing a particular task. We rewrote that service in Clojure and it performs orders of magnitude faster and uses orders of magnitude less memory.
- hoov 13y ago> Tell me, what is less effort: Implementing that, or building a small app/service that performs the functionality you need using existing tools? I think it depends on your use case. In certain cases, you want to do work inline. In other cases, you want to do PS manipulation in the background. I could imagine projects that go in either direction. If I had a large Python desktop application, I'd port the code. If I had a Django application that wanted to do background processing of PS documents, I'd put the work on a queue and have Ruby take care of the messy bits. > Also I'd consider the suitability of a given technology before this too, e.g. on my current project there is a lot of Ruby code, but it's a major bottleneck in one of our services performing a particular task. We rewrote that service in Clojure and it performs orders of magnitude faster and uses orders of magnitude less memory. I take a different approach. If I find a bottleneck in Python code, I use ctypes or write a C extension. I'd do the same thing in Ruby. I'm hesitant to deploy multiple runtimes, since I worry about security updates, etc. If I were on JRuby, Clojure would be a natural fit -- I'd only be deploying one JVM.
- tluyben2 13y agoThank you very much for doing this! I wish all people hacking the PSD format would join forces and help with one project. There are too many partial implementations which scratch an itch instead of trying to be a full implementation.
- voltagex_ 13y agoI get this feeling with many open source projects, but merges happen much less often than forks.
- blt 13y agoDoes anyone else think it's weird that they decided to make this library in Ruby? It drastically cuts down on the audience. Why not C/C++ with wrappers for all the dynamic languages? EDIT: nevermind, it makes sense now that I see their main product is a version control system for designers. Still, it would be nice to see this ported to native code some day.
- stormcrowsx 13y agoMost of the work is done, get off your ass and start porting.
- blt 13y agoI might just accept that challenge!
- zem 13y agoas a programming language fan, i've never found anything as productive as ruby. it may not be the fastest language out there, and it may not have a bunch of static safety guarantees, but for exploratory programming it's pretty much unparalleled. if i were tasked with making a psd reader, i'd definitely do it in ruby first and then port it over to whichever language the client called for.
- adamwong246 13y agoIdea: Use this to dynamically "compile" photoshop files into png, jpgs, etc on the rails assets pipeline.
- netforay 13y agoI have been trying to do this from last 3 months. But I intend to make modifications to layers (turn on or off, change colors) and export to PNG. When I saw Psd.rb I thought it is done. But it just exports the channel data saved by Photoshop. So our modifications wont reflect in it.
- captainbenises 13y agoI reckon a good tool (that this psd.rd wouldn't actually help write, but), would be one that rendered an html/css page - and exported a layered PSD, so you could prototype an app, render it to .psd and send it to your designer friend to make it look rad.
- mhd 13y agoIs this more feature complete (esp. regarding to newer PS versions) than e.g. libpsd? http://sourceforge.net/projects/libpsd/ http://sourceforge.net/projects/libpsd/
- meltingice 13y agolibpsd and PSD.rb both have features that the other doesn't have. For example, PSD.rb parses text/font data, while libpsd can handle images with zip compression. libpsd was actually a great reference in building PSD.rb, especially since it was correct during the times that the actual file spec was wrong and more explicit in the type of data being read.
- smickie 13y agoThis is a great example of why open source is brilliant. Everybody wins. We get a PSD parser. LayerVault benefits from the world improving they're core product too.
- cveigt 13y agoThese are great news for developers and an easy way to communicate between designers with developers. Is the beginning of a solution for a big problem.
- Radle 13y ago// PSD is not my favourite file format. I see bro...
- jheriko 13y agonice. now if someone can port it to C so that everyone can benefit... :)
- primitur 13y agoI'd pay for a Lua port of this. Anyone interested? Drop me a PM.