Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

PNGShot Switch: Difference between revisions

From GameBrew
 
(5 intermediate revisions by 2 users not shown)
Line 2: Line 2:
|title=PNGShot
|title=PNGShot
|image=Switch-logo.png
|image=Switch-logo.png
|description=The long lost PNG screenshot sysmodule for Nintendo Switch.
|description=Capture screenshots as PNGs.
|author=J-D-K
|author=J-D-K
|lastupdated=2024/09/04
|lastupdated=2024/09/18
|type=Sysmodules
|type=Sysmodules
|version=1.0.2
|version=1.5.0
|license=Mixed
|license=Mixed
|download=https://dlhb.gamebrew.org/switchhomebrews/PNGShotSwitch.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/PNGShotSwitch.7z
Line 19: Line 19:
|image_alt=PNGShot
|image_alt=PNGShot
}}
}}
PNGShot is a sysmodule I developed years ago, which I thought was lost. In combination with bitmap-printer's exefs patches, it allows you to take screenshots and save them as PNGs instead of the system's default JPEG format. The benefits include:
A sysmodule that can take screenshots and save them as PNG's instead of the system's default JPEG. The benefits are that:
* Files are smaller than a bitmap, ranging from a couple of hundred kilobytes to just under 2MB, depending on what’s captured.
* Unlike JPEG, PNGs are lossless.


* '''Smaller file sizes''': Files are smaller than a bitmap, ranging from a couple of hundred kilobytes to just under 2MB, depending on what’s captured.
==Installation==
* '''Lossless quality''': Unlike JPEG, PNGs are lossless.
For now you will need the exefs patches from [[Bitmap Printer Switch|bitmap-printer]].


==How to Use==
Download the sysmodule from [https://github.com/J-D-K/PNGShot/releases here] and extract to your SD card.
* You'll need the exefs patches from [[Bitmap Printer Switch]] for now. I might create my own patches in the future, but for now, I don't see the point or have the time to redo work that's already been done.
 
* Download the sysmodule from the GitHub repository link at the bottom of this post.
==User guide==
* Press the capture button to capture the current screen and save it to "sdmc:/switch/PNGShot/[date][time].png".
Screenshots are exported to "SDMC:/[album directory]/PNGs/[year][month][day][hour][minutes][seconds].png" when the capture button is pressed.
 
They are standard RGB, containing no alpha to minimize size. They are captured using the screenshot viLayer, so they do contain the same watermarks as normal screenshots. This can easily be changed by editing line 99 for the "experimental" build or 170 of capture.c in PNGShot's source.


==Changelog==
==Changelog==
'''v1.5.0'''
* PNGShot now uses <code>[album directory]/PNGs</code> instead of <code>switch/PNGShot</code> when creating screenshots.
** PNGShot will try to open the album directory on your SD card first and fall back to NAND if that fails.
* This also means PNGShot no longer uses C stdio functions for file writing, instead using libnx's FS functions directly to get the job done.
* Included in this release is what I call the &quot;experimental&quot; build:
** This build buffers the entire raw capture after the capture button is pressed. This requires a lot more memory to be used. The experimental build uses 6MB vs the normal build's 24KB. YOU HAVE BEEN WARNED. This can cause conflicts and issues, but has the benefit of allowing normal JPEGs and video captures to function again because the capture stream is released almost immediately.
'''v1.0.2'''
'''v1.0.2'''
*Time service is exited after libnx time is initialized and it's no longer needed anymore.
*Time service is exited after libnx time is initialized and it's no longer needed anymore.
Line 38: Line 48:
* First Release.
* First Release.


==Thanks to==
==Credits==
Thanks to:
* [https://github.com/HookedBehemoth HookedBehemoth] for [https://github.com/HookedBehemoth/bitmap-printer bitmap-printer] and its patches.
* [https://github.com/HookedBehemoth HookedBehemoth] for [https://github.com/HookedBehemoth/bitmap-printer bitmap-printer] and its patches.
* [https://github.com/impeeza Impeeza] for enhancing the makefile and readme to be more descriptive and easier to use. Thank you.
* [https://github.com/impeeza Impeeza] for enhancing the makefile and readme to be more descriptive and easier to use. Thank you.

Latest revision as of 02:23, 22 September 2024

PNGShot
Switch-logo.png
General
AuthorJ-D-K
TypeSysmodules
Version1.5.0
LicenseMixed
Last Updated2024/09/18
Links
Download
Website
Source

A sysmodule that can take screenshots and save them as PNG's instead of the system's default JPEG. The benefits are that:

  • Files are smaller than a bitmap, ranging from a couple of hundred kilobytes to just under 2MB, depending on what’s captured.
  • Unlike JPEG, PNGs are lossless.

Installation

For now you will need the exefs patches from bitmap-printer.

Download the sysmodule from here and extract to your SD card.

User guide

Screenshots are exported to "SDMC:/[album directory]/PNGs/[year][month][day][hour][minutes][seconds].png" when the capture button is pressed.

They are standard RGB, containing no alpha to minimize size. They are captured using the screenshot viLayer, so they do contain the same watermarks as normal screenshots. This can easily be changed by editing line 99 for the "experimental" build or 170 of capture.c in PNGShot's source.

Changelog

v1.5.0

  • PNGShot now uses [album directory]/PNGs instead of switch/PNGShot when creating screenshots.
    • PNGShot will try to open the album directory on your SD card first and fall back to NAND if that fails.
  • This also means PNGShot no longer uses C stdio functions for file writing, instead using libnx's FS functions directly to get the job done.
  • Included in this release is what I call the "experimental" build:
    • This build buffers the entire raw capture after the capture button is pressed. This requires a lot more memory to be used. The experimental build uses 6MB vs the normal build's 24KB. YOU HAVE BEEN WARNED. This can cause conflicts and issues, but has the benefit of allowing normal JPEGs and video captures to function again because the capture stream is released almost immediately.

v1.0.2

  • Time service is exited after libnx time is initialized and it's no longer needed anymore.

v1.0.1

  • Uses new naming scheme for output.
  • Updated code.

v1.0

  • First Release.

Credits

Thanks to:

External links

Advertising: