Location of file-format specifications for PSP X8?

Corel Paint Shop Pro

Moderator: Kathy_9

Post Reply
crawford
Posts: 11
Joined: Mon Jun 27, 2016 2:42 pm
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Corel programs: PSP X7
Location: East coast USA

Location of file-format specifications for PSP X8?

Post by crawford »

Hi, I'm trying to find the file-format specifications for X8 .psp files, because I'm writing some Python code to pull data out of the psp files. I have found ftp://ftp.corel.com/pub/documentation/PSP/, which contains information for some older versions (PSP 6, etc), but nothing for the latest version.

I emailed Corel tech support, they said it didn't exist - probably correct :) but I'm hoping it might be somewhere. Thanks for any help.
LeviFiction
Advisor
Posts: 6831
Joined: Thu Oct 02, 2008 1:07 pm
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: Alienware M17xR4
processor: Intel Core i7-3630QM CPU - 2_40GH
ram: 6 GB
Video Card: NVIDIA GeForce GTX 660M
sound_card: Sound Blaster Recon3Di
Hard_Drive_Capacity: 500GB
Corel programs: PSP: 8-2023
Location: USA

Re: Location of file-format specifications for PSP X8?

Post by LeviFiction »

Nope, doesn't exist. I've looked for years. I wanted to be able to create scripts that would grab the data from the clipboard and allow me to manipulate it before saving i back in a format PSP can handle. I still can, obviously, with the PSP8 fileformat. But I had hoped to be able to get at the more modern stuff.
https://levifiction.wordpress.com/
crawford
Posts: 11
Joined: Mon Jun 27, 2016 2:42 pm
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Corel programs: PSP X7
Location: East coast USA

Re: Location of file-format specifications for PSP X8?

Post by crawford »

Thanks. I was afraid of that... :) Another question, though, since you've worked with the files - have you ever tried reading an X8 .psp file? I'm wondering if the basic blocks (layers, alpha masks, etc) are at least somewhat similar? If all they did was add new block types (as it looks like 6->7 did), then I could get the data I want from an X8 file. If, as is more likely, they totally borked the new format, then guess that plan is out. :(
LeviFiction
Advisor
Posts: 6831
Joined: Thu Oct 02, 2008 1:07 pm
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: Alienware M17xR4
processor: Intel Core i7-3630QM CPU - 2_40GH
ram: 6 GB
Video Card: NVIDIA GeForce GTX 660M
sound_card: Sound Blaster Recon3Di
Hard_Drive_Capacity: 500GB
Corel programs: PSP: 8-2023
Location: USA

Re: Location of file-format specifications for PSP X8?

Post by LeviFiction »

I haven't tried, no. Sorry, though I had often wondered if it was. I haven't worked very long on it though, I say "years" but it's more like whenever I've thought to try again. Which unfortunately I have a hard time keeping track of how long it's been between attempts. I keep messing something up in my attempts to read the file, I pull the wrong kind of data or I'm misunderstanding what kinds of data to read. I get frustrated, decide to put it off for another day, next thing I know it's months later. :P So I'm the least helpful in that regard.
https://levifiction.wordpress.com/
crawford
Posts: 11
Joined: Mon Jun 27, 2016 2:42 pm
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Corel programs: PSP X7
Location: East coast USA

Re: Location of file-format specifications for PSP X8?

Post by crawford »

Heh - I know the feeling, I've been working on my project off-and-on for a while also. Decided I finally need to finish it - unfortunately, not only do I not have the specs for X8, I don't own a copy of the program (I'm using a really old version), so can't easily test the new file-format.

I'd really appreciate it if you, or someone else reading the thread, could help me test the new files, by converting some old-format files I have to the new format. I've uploaded two sample files to Dropbox: file_1 and file_2. (And if you wanted to be really helpful, :) maybe create a third file from scratch, just in case the conversion is using some kind of compatibility mode instead of writing using the latest X8 format).

What I want to do, is create a pull-request to add the .psp file format to the Python Pillow package, so it would at least be able to read various data from PSP files, convert to bitmaps and more importantly, create PNG files with alpha-channel masks. I've got code working for a really old version (PSP 6), but if I can't get it to work with the latest file-format, not sure it's worth doing a pull-request just for the older version.

It's possible that Corel uses the same basic structure for its newer formats, and just adds new features in new blocks, in which case the code should work already. Of course, it's also possible they completed revised the format, and nothing's compatible :( I'm hoping it's the first case :D

John C>
LeviFiction
Advisor
Posts: 6831
Joined: Thu Oct 02, 2008 1:07 pm
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: Alienware M17xR4
processor: Intel Core i7-3630QM CPU - 2_40GH
ram: 6 GB
Video Card: NVIDIA GeForce GTX 660M
sound_card: Sound Blaster Recon3Di
Hard_Drive_Capacity: 500GB
Corel programs: PSP: 8-2023
Location: USA

Re: Location of file-format specifications for PSP X8?

Post by LeviFiction »

Here is a Google Drive folder with the converted files

https://drive.google.com/open?id=0B8FlF ... 3lJUFJFeGs

Image3.pspimage is just a white background layer with a layergroup, mask, and raster layer. If you need something more specific or less specific let me know.
https://levifiction.wordpress.com/
crawford
Posts: 11
Joined: Mon Jun 27, 2016 2:42 pm
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Corel programs: PSP X7
Location: East coast USA

Re: Location of file-format specifications for PSP X8?

Post by crawford »

Thanks, I appreciate it. I've downloaded them, and tried them out. My code is breaking, unfortunately, but can't tell yet if it's just some minor thing I'm not handling correctly, or a major change that breaks everything. :)
crawford
Posts: 11
Joined: Mon Jun 27, 2016 2:42 pm
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Corel programs: PSP X7
Location: East coast USA

Re: Location of file-format specifications for PSP X8?

Post by crawford »

Wups, one thing I didn't think of - there are several options when saving files involving compression, etc. I don't yet have RLE/LZ77 compression working - would you mind saving another set, and in the Options button, select "no compression"? Sorry I didn't notice that before. :)

(It's probably not what's breaking, but one less variable to deal with...)

Also, I'm curious if there are other save-options, like for older versions? I suspect not, but never know.

John C>
LeviFiction
Advisor
Posts: 6831
Joined: Thu Oct 02, 2008 1:07 pm
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: Alienware M17xR4
processor: Intel Core i7-3630QM CPU - 2_40GH
ram: 6 GB
Video Card: NVIDIA GeForce GTX 660M
sound_card: Sound Blaster Recon3Di
Hard_Drive_Capacity: 500GB
Corel programs: PSP: 8-2023
Location: USA

Re: Location of file-format specifications for PSP X8?

Post by LeviFiction »

I've uploaded the No compression versions to the same folder.

The options are for compression, compatability, and including the ICC profiles.

Compatability formats available in X8 are:

PSP5
PSP6
PSP7
PSP8
PSP9
PSPX
PSPXI
PSPX2
PSPX3
PSPX4 - PSPX7 (these three versions all use the same format)
PSPX8
https://levifiction.wordpress.com/
crawford
Posts: 11
Joined: Mon Jun 27, 2016 2:42 pm
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Corel programs: PSP X7
Location: East coast USA

Re: Location of file-format specifications for PSP X8?

Post by crawford »

That's interesting, and a bit surprising that they include that much backwards-compatibility.

Can I bug you for one more version? :) The latest specs I've been able to find are PSPX - at least I think that's it. Docs say:
September, 2005
Paint Shop Pro (PSP) File Format Version 8.0
Paint Shop Pro Application Version 10.0
If that's actually PSPX, and I can get the code to read it, would be fairly close to X8. People (who wanted to use the Pillow library) would still have to save back to that version, which is somewhat of a pain, but at least it would be workable.

Many thanks.

John C>
LeviFiction
Advisor
Posts: 6831
Joined: Thu Oct 02, 2008 1:07 pm
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: Alienware M17xR4
processor: Intel Core i7-3630QM CPU - 2_40GH
ram: 6 GB
Video Card: NVIDIA GeForce GTX 660M
sound_card: Sound Blaster Recon3Di
Hard_Drive_Capacity: 500GB
Corel programs: PSP: 8-2023
Location: USA

Re: Location of file-format specifications for PSP X8?

Post by LeviFiction »

Alright, updated the folder with PSPX versions as well.

Don't know if it helps or not, probably not. I ran both the PSPX8 version and the PSPX version through the HxD hex editor and ran a file comparison. There were subtle differences at first, then the PSPX8 version had a full empty block before continuing on to match the PSPX version (offset by one big block of values) at that point continuing to run comparisons was difficult as I had to compare them offset from each other. But they looked close, so the idea that PSPX8 includes unknown blocks while having a similar base might be accurate.
https://levifiction.wordpress.com/
crawford
Posts: 11
Joined: Mon Jun 27, 2016 2:42 pm
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Corel programs: PSP X7
Location: East coast USA

Re: Location of file-format specifications for PSP X8?

Post by crawford »

Well, it's surprisingly close - got a 50% success rate, anyway. :D After modifying the code for the changed blocks, I was able to read one of the two files:

Code: Select all

Image File [/home/crawford/Projects/PSP_Scan/PSPX_layers_04_256.pspimage]: 623007 bytes

File Version = [8.0]

Block[PSP_IMAGE_BLOCK]: 46 bytes
	total_image_size: 1376256
	plane_count: 1
	color_count: 16777216
	active_layer: 0
	image_width: 256
	bit_depth: 24
	image_height: 256
	greyscale_flag: 0
	chunk_size: 46
	layer_count: 7
	compression_type: 0
Block[PSP_COLORPROFILE_BLOCK]: 3178 bytes
Block[PSP_EXTENDED_DATA_BLOCK]: 24 bytes
Block[PSP_CREATOR_BLOCK]: 56 bytes
Block[PSP_COMPOSITE_IMAGE_BANK]: 210002 bytes
Block[PSP_LAYER_START_BLOCK]: 409605 bytes

Block[PSP_LAYER_BLOCK]: Layer: type = keGLTRaster, bytes = 196830, name = [Background], channels = [3]
	Bitmap[65536 pixels]: [(128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255), (128, 128, 255)]
		Image Rect:		topleft = (0, 0), bottomright = (256, 256)
		SavedImage Rect:	topleft = (0, 0), bottomright = (256, 256)
		SavedImage Rect	width/height = 256/256
		Mask Rect:		topleft = (0, 0), bottomright = (0, 0)
		SavedMask Rect:	topleft = (0, 0), bottomright = (0, 0)
		SavedMask Rect	width/height = 0/0
		Block[PSP_CHANNEL_BLOCK]: 65536 bytes. Channel = [0]. Compression type = PSP_COMP_NONE, Bitmap type = PSP_DIB_IMAGE, Channel type = PSP_CHANNEL_RED
			[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]
			80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:8
		Block[PSP_CHANNEL_BLOCK]: 65536 bytes. Channel = [1]. Compression type = PSP_COMP_NONE, Bitmap type = PSP_DIB_IMAGE, Channel type = PSP_CHANNEL_GREEN
			[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]
			80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:80:8
		Block[PSP_CHANNEL_BLOCK]: 65536 bytes. Channel = [2]. Compression type = PSP_COMP_NONE, Bitmap type = PSP_DIB_IMAGE, Channel type = PSP_CHANNEL_BLUE
			[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
			FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:F

Block[PSP_LAYER_BLOCK]: Layer: type = keGLTRaster, bytes = 38330, name = [layer_1_blue], channels = [4]
   ...
Now if I can just figure out what's breaking in the other picture. :) Thanks again for the help.

John C>
crawford
Posts: 11
Joined: Mon Jun 27, 2016 2:42 pm
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Corel programs: PSP X7
Location: East coast USA

Re: Location of file-format specifications for PSP X8?

Post by crawford »

If anyone's interested in playing alpha-tester for a PSP library :) I finally finished the Python library I was working on to scan PSP files. It's currently in alpha, seems to work for me, but I'm sure there's bugs. Also has a fair number of constraints - for instance, have to File->Save-As version X, since that's the last version I can find documentation on.

It's published on PyPi, so can be installed with pip:

https://pypi.python.org/pypi/psp-scan

Wiki page with install/usage documentation:

https://github.com/CrawfishPress/psp_scan/wiki

Looking forward to the brutal feedback. (okay, not really, however any feedback is appreciated). :D

John C>
Radim
Posts: 712
Joined: Mon Nov 01, 2010 5:54 pm
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
ram: 4GB
Monitor/Display Make & Model: 27 inch

Re: Location of file-format specifications for PSP X8?

Post by Radim »

And what format of X9, we have a new tool - "live" gradients.. :D
LeviFiction
Advisor
Posts: 6831
Joined: Thu Oct 02, 2008 1:07 pm
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: Alienware M17xR4
processor: Intel Core i7-3630QM CPU - 2_40GH
ram: 6 GB
Video Card: NVIDIA GeForce GTX 660M
sound_card: Sound Blaster Recon3Di
Hard_Drive_Capacity: 500GB
Corel programs: PSP: 8-2023
Location: USA

Re: Location of file-format specifications for PSP X8?

Post by LeviFiction »

The new tool would not effect anything. The Gradient Fill tool only interactively fills a layer or selection or object with a gradient. Once the gradient is applied it's no different than any other gradient applied with the regular fill tool. So you lose no functionality saving to an older format. Now, text wrapping is different and does affect the file format.

As crawford said, this code presented here only supports version X(10) file format because that's the last file format that has official documentation. To support later formats their newest features and items would have to be reverse engineered. It's why a lot of 3rd party tools only support PSP file formats up to version 9.
https://levifiction.wordpress.com/
Post Reply