• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Script to rip apart spritesheets and save them individually as pngs

Explorer ,
Jul 22, 2019 Jul 22, 2019

Copy link to clipboard

Copied

Hey all you amazing scripters,

I have a spritesheet with varying sizes of sprites all on 1 layer. I am wanting to automatically split them up into different layers and then quick save the layers as a png.

I’ve been able to do this manually with actions if they’re the same size or smaller than a defined amount but can’t seem to make them work if they’re different. It seemed that a script would make this way quicker and more efficient.

The sprites will all be separated by varying amount of space, so nothing will be touching. If It doesn’t change anything, the sprites will have a few pixel drop shadow but will still not be touching other adjacent sprites. If that makes the script more difficult because of opacity in the shadow, it can be removed.

Hopefully someone is able to help! I’ve googled extensively and there are a lot of tools that do this but none seem to work on varying sprite sizes. Any and all help is appreciated. Thank you for your time.

TOPICS
Actions and scripting

Views

3.2K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe
Explorer ,
Jul 22, 2019 Jul 22, 2019

Copy link to clipboard

Copied

7yWvW.jpg

Here is an example spritesheet from google so any potential scripters know what I mean. I want to split each image into separate layers and then export them as a png.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 22, 2019 Jul 22, 2019

Copy link to clipboard

Copied

I thought of this one, however, it will not be suitable:

Split to Layers | Photoshop Scripts

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 27, 2019 Jul 27, 2019

Copy link to clipboard

Copied

Not exactly what I was looking for but I used it for a few hours. It seems to be very buggy and saves the layers at random (skips over things) and then saves a lot of duplicates. Thank you for the thought and I guess if worse comes to worse I can use it.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 27, 2019 Jul 27, 2019

Copy link to clipboard

Copied

The script was meant for images on a transparent background, with each unique element surrounded by transparency to be considered as a separate image. This is not the case with your example image, which is why I said that it would not be suitable.

Although the images do vary in size, there is a maximum size of the images which appears to be repeated. So a script or even your action could move the crop selection the same maximum amount and then use the trim command to remove the upper or lower first white pixel or transparent pixels if that is how the original is created.

I'm guessing that your question or a similar question may have been asked before and an existing solution would need to be adjusted. If you can come back with code that needs changing you would probably get more help.

EDIT:

Take the following script as an example, you can enter in 6 across and 4 down and it will split up your spritesheet, however, some will be chopped off. Perhaps they are not as evenly spaced as I assumed.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Jul 28, 2019 Jul 28, 2019

Copy link to clipboard

Copied

...however, some will be chopped off. Perhaps they are not as evenly spaced as I assumed.

This is because the sample image is simply not the full image.

As it usually looks, you can see here ...

https://www.nicepng.com/downpng/u2q8q8t4e6w7i1i1_realistic-fire-sprite-sheet-fast-food/

In ALL cases where there are different large sprites in 1 document, there is always a file with coordinates or pixelsizes to split them...

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 28, 2019 Jul 28, 2019

Copy link to clipboard

Copied

Hi Tom, thanks for joining the discussion! The image you posted is much better than the original posts, the second script that I linked to works with that image fine using a split of 7 x 7.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 28, 2019 Jul 28, 2019

Copy link to clipboard

Copied

An Interactive action where the user would be required drag out guide lines so the action could use a script to dice up your sheet can be recorded to create layers then create an animated gif that would look like this. The Frame layers can be saved out as png24 using menu File>Exoprt>Layers to Files... .

7yWvW.gif

Capture.jpg

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 28, 2019 Jul 28, 2019

Copy link to clipboard

Copied

The picture I posted was an example. My sprite sheet has no background and transparency around all sprites. The sprites are varying sizes and shapes, and aren't all on the same axis so none of the posted solutions will work. This​ (linked above) script works nearly perfect but as I already mentioned skips over things randomly and duplicates some layers. I guess I will just have to make do. Thanks.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 28, 2019 Jul 28, 2019

Copy link to clipboard

Copied

Yes that script normally create many more layer then you want. It seems to make a layer for any little spec in the raster  layer that is surrounded by transparency. It does not know a spec is not one of your sprites.  I think if you want an automated process you need to create you sprites sheet in a more organize fashion like in a grid so the sprites can be isolate automatically and layer created. It sound like you would need some AI program that can recognize what is and what is not a sprite in your current sprite sheet. Where Sprites are various sizes in random random locations that can hold a hold a sprite you create.

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Jul 28, 2019 Jul 28, 2019

Copy link to clipboard

Copied

LATEST

Post an example we can work with...

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines