rTexViewer

A simple and easy-to-use textures viewer, editor and image board.

What can I do with rTexViewer?

rTexViewer is a powerful image viewer and editing tool that allows you to organize images into an image board, perfect to generate moodboards for reference and inspiration. It also includes multiple image editing tools to optimize pixel format, crop, resize, flip or apply custom GLSL shader effects, including an integrated shader code editor with hot-reloading.

With rTexViewer, you can easily view and manage your game textures or sprites, and also export them in multiple formats.

Features

  • Three view image modes: TABS, BOARD or FOLDER
  • Load/Save images/full-board as .rtv project file (non-destructive, image data compressed)
  • Load image file formats: .png, .qoi, .bmp, .tga, .jpg, .gif, .hdr, .ppm, .pgm
  • Load compressed texture formats: .dds, .pkm, .ktx, .pvr, .astc (if supported by GPU)
  • Load images from URL (copy&paste), saved automatically into a downloads directory (Windows only)
  • View image options: Zoom, Pan, Alpha, Background and Scale filter
  • View image information: Name, Size, Format, Memory, Selected Pixel info, Color Palette
  • Edit images: Change image pixel-format with real-time preview
  • Edit images: Flip, Rotate, Resize, Resize Canvas, Crop, Alpha Clean and more
  • Edit images: Visual crop mode, just draw a rectangle and crop
  • Edit images: Define image Text Description, saved on .rtv
  • Edit images: Assign GLSL shaders effects to images, saved on .rtv
  • Image shader code editor with auto-hot-reloading of shader changes
  • Multiple sample GLSL shaders provided for reference and new effects creation
  • Export single images as .png, .qoi, .dds, .raw or byte array .h
  • Export full image board as a single image .png, .qoi or .dds
  • Export image palette as .png or .pal (up to 256 colors)
  • Multiple UI styles supported, including latest Amber style!
  • Multiple window options: clean mode, borderless, top-most, mouse pass-through
  • Command-line support for batch image processing and formats conversion
  • Completely portable (single-file, no-dependencies)

Basic Usage

Open the tool, drag & drop your images and view/edit them or place/organize them in the board mode.

Edited image can be exported as .png, .qoi, .dds, .raw and .h code file. Images collection can be saved as a .rtv project file.

rTexViewer desktop version comes with command-line support for batch image processing and format conversion. Up to 256 chainned transformations can be applied per image on the command-line. For usage help:

rtexviewer.exe --help

Keyboard/Mouse Shortcuts

  • F1 - Show Help window
  • F2 - Show About window
  • F3 - Show Issue Report window

File Options

  • LCTRL + N - New project
  • LCTRL + O - Load image/board
  • LCTRL + S - Save image/board
  • LCTRL + E - Export image/board
  • LCTRL + X - Close image

View Modes

  • 1,2,3 - Switch view mode: Tabs, Board, Folder
  • F5 - Toggle image Info window (uncomp. only)
  • F6 - Toggle image Edit window (uncomp. only)
  • F7 - Toggle image Shade Editor

-Tabs/Folder mode controls

  • MOUSE WHEEL - Zoom in/out
  • MOUSE LEFT/MIDDLE BTN - Panning
  • LCTRL + LSHIFT + MOUSE WHEEL - Fast zoom
  • F - Zoom to screen size and center
  • A + MOUSE WHEEL - Opacity change

-Board mode controls

  • MOUSE WHEEL - Board zoom in/out
  • MOUSE LEFT BTN - Image selection/movement
  • MOUSE MIDDLE BTN - Board panning
  • LCTRL + MOUSE WHEEL - Image zoom
  • LCTRL + LSHIFT + MOUSE WHEEL - Image fast zoom
  • LALT + MOUSE WHEEL - Image draw order
  • SPACE - Toggle image Lock

Image Edit Options

  • H - Flip image Horizontal
  • V - Flip image Vertical
  • R - Rotate image 90 degrees CW
  • LCTRL + R - Show Resize window
  • LCTRL + K - Show Visual Crop mode
  • MOUSE LEFT BTN - Draw crop rectangle"
  • T - Edit image text info

Shader Editor (on mouse hover)

  • LCTRL + X - Cut selected text
  • LCTRL + C - Copy selected text
  • LCTRL + V - Paste selected text
  • LCTRL + Z - Undo latest text changes
  • LCTRL + X - Undo latest text changes
  • U - Reset image shader

View Options

  • C - Toggle Clean mode
  • G - Toggle Grid mode (zoom +500%)

Window Options

  • 7 - Toggle undecorated window
  • 8 - Toggle top-most window
  • 9 - Toggle mouse-passthrough window
  • 0 - Toggle transparent background
  • LALT + A + MOUSE WHEEL - Window opacity
  • MOUSE MIDDLE BTN - Pan window (undecorated)"

Images navigation

  • TAB - Cycle to next image
  • RIGHT/PAGE UP - Show next image
  • LEFT/PAGE DOWN - Show previous image
  • ESCAPE - Close Window/Exit

Command-line

  USAGE:
    > rtexviewer [--help] --input <filename.ext>
       [--output <filename.ext>] [--format <pixelformat>]
       [--resize <new_width>,<new_height>,[algorythm]]
       [--resize-canvas <new_width>,<new_height>,[offsetx],[offsety]]
       [--crop <x>,<y>,<width>,<height>]
       [--flip-horizontal] [--flip-vertical]
       [--rotate-cw] [--rotate-ccw]
       [--alpha-clear] [--alpha-crop] [--alpha-premultiply]
       [--make-pot] [--dithering] [--gen-mipmaps]
       [--palette <filename.ext>]\n
  OPTIONS:
    -h, --help                      : Show tool version and command line usage help
    -i, --input <filename.ext>      : Define input file\n
    -iraw, --input-raw <filename.raw>,<width>,<height>,<format>,<header>
                                    : Define raw input file\n
    -o, --output <filename.ext>     : Define output file
                                    : Supported extensions: .png, .ktx, .raw, .h\n
    -f, --format <pixelformat>      : Convert image pixel format\n
    -r, --resize <new_width>,<new_height>,[algorythm]
                                    : Resize image\n
    -rc, --resize-canvas <new_width>,<new_height>,[offsetx],[offsety]
                                    : Resize canvas\n
    -k, --crop <x>,<y>,<width>,<height>]
                                    : Crop image to rectangle\n
    -fh, --flip-horizontal          : Flip horizontal
    -fv, --flip-vertical            : Flip vertical
    -rcw, --rotate-cw               : Rotate CW
    -rccw, --rotate-ccw             : Rotate CCW
    -pot, --make-pot                : Make Power of Two
    -ac, --alpha-clear              : Clear alpha pixels
    -at, --alpha-trim               : Trim alpha border
    -ap, --alpha-premultiply        : Premultiply alpha
    -d, --dithering                 : Apply image dithering
    -gm, --gen-mipmaps              : Generate mipmaps
  EXAMPLE:
    > rtexviewer --input image.png --output output.png --format R5G5B5A1

Technologies

This tool has been created using the following open-source technologies:

  • raylib - A simple and easy-to-use library to enjoy videogames programming
  • raygui - A simple and easy-to-use immediate-mode-gui library
  • rpng - A simple and easy-to-use library to library to manage png chunks
  • rini - A simple and easy-to-use config init files reader and writer
  • tinyfiledialogs - File dialogs for desktop platforms

Handmade Software

rTexViewer is handmade software, it has been meticulously developed using the C programming language, with great attention put on each line of code written. This approach usually results in highly optimized and efficient code, but it is also more time-consuming and require a higher level of technical skills. The result is great performance and small memory footprint.

rTexViewer is self-contained in a single-executable of about 1 MB, it could fit on a floppy disk.

Issues & Feedback

Note that the one-time-payment desktop version of rTexViewer comes with no support. Still, tool issues and feedback can be reported at https://github.com/raylibtech/rtools. They are reviewed with low-priority.

For additional support, priority issues review or tool customization requirements, please contact ray[at]raylibtech.com

License

The use of rTexViewer desktop application is subject to the terms and conditions of the End User License Agreement. By using rTexViewer, the user agrees to be bound by the terms of the EULA.

Check included End User License Agreement document for details (EULA.txt).

Copyright (c) 2015-2024 raylib technologies (@raylibtech) | Ramon Santamaria (@raysan5)

Updated 28 days ago
StatusReleased
CategoryTool
PlatformsHTML5, Windows, macOS, Linux
Release date Mar 14, 2019
Rating
Rated 5.0 out of 5 stars
(8 total ratings)
Authorraylib technologies
Made withraylib
Tagsimage, raygui, raylib, Textures, tool, viewer
Average sessionAbout an hour
LanguagesEnglish
InputsKeyboard, Mouse
LinksSteam, Homepage, Twitter/X, Steam, LinkedIn

Purchase

Buy Now$19.95 USD or more

In order to download this tool you must purchase it at or above the minimum price of $19.95 USD. You will get access to the following files:

rTexViewer v4.0 Windows (x64) 543 kB
rTexViewer v4.0 Linux (x64) (X11 + Wayland) 547 kB
rTexViewer v4.0 macOS (x64 + arm64) 1 MB

Development log

Comments

Log in with itch.io to leave a comment.

Hey Ray,

Is there a way to change the GUI font size? I want to make it a little bit bigger. I cannot find any way to do it. Maybe som k : v in the config.ini?

Thanks

I quite like the program but I find it very difficult to use as an image board as it is quite difficult to zoom in and out without selecting a specific image. I would prefer having to click to select an image and right click to select no image.

Thanks for the feedback! I'm actually reviewing that behaviour to zoom to mouse-position in all view modes. Also reviewing the mouse behaviour.

I found a bug. If, while in tab view, an image is large enough that clicking the view button would click the image underneath, then clicking to switch from tab to board can mess up the image's position on the board. This only happens if the user moves the mouse during the click on the view button, even if just one pixel.

Thanks for reporting! Not sure if I understand it correctly... please, could you open an issue on https://github.com/raylibtech/rtools to review it?

I found buggy behaviour. When opening a .rtv image board file from a folder with other .rtf board files. Starting from the board view, select an image then switch to directory view, some image in the board will have the right arrow enabled, click it to switch this image to one from another board file. Not all image will be scrollable in the directory view.

(1 edit)

I could replicate this consistently before but now I cannot... Weird. The issue might come from somewhere else.

Thanks! It sounded difficult to reproduce! :D

I found a bug. It is possible to keep dragging an image while switching mode with the 1-3 keys. It is possible to drag around an image by clicking through the menu bar at the top of the screen. This is also possible to do through buttons.

Thanks! I take note! I think this should be easy to fix...

I found a bug. In board mode, zooming out a lot will forcefully enlarge the selected image. In this very zoomed-out situation, hovering any image will force them to their minimum size.

I think this is caused by the minimum limit when scaling images.

Thanks! I think this can be also easely addressed. :)

(2 edits)

Hi Ray, very nice tool! Will the tool support more features for image/art creation, such as pixel art? Totaly cool if you're going to develop a separate tool for that purpose BTW.

Hi Jack-Ji! Thanks! No plans to add image creation capabilities like pixel-art for the moment, in any case additional editing capabilities, like shaders editing. Maybe a separate tool but unfortunately my resources are very limited.

Hi Ray, 

I really like this tool (and Raylib). Happy to support your excellent work and just bought thisfor the Linux version.

When running ./rtexviewer, however, I'm getting an error that 'GLIBC_2.3x' (x = 5 | 3 | 4) is not found and is required by the app. My current GLIBC version is 2.31 and I'm running Ubuntu 20.04.6 LTS x86.

Is there a relatively painless way of overcoming this error without making major changes (e.g., upgrading Ubuntu to a new version)?

Thanks,

edibo

Just reviewed this issue. 

All the tools are build on GitHub servers using the provided Linux host runner, that use by default Ubuntu 22.04, I tried rebuilding it with Ubuntu 20.04 alternative host. 

I'm uploading a new file but please note that this new version is a development version with some improvements and new features for the tools and not much tested. 

Please, let me know if it works for you! :) 

Dear Ray,

Much thanks for your quick reply and upload.

I tested the Ubuntu 20.04 (dev) version and it works perfectly as far as I can see. I also upgraded another machine to Ubuntu 22.04 to try the release version and that works great too.

Thanks again and keep up the great work!!!

edibo

Nice! Glad to know it worked! :D

(1 edit)

Do you think you could add a macOS arm64 build?

Same request, for the other tools you make, if it's feasible.

I'm afraid this is not possible at the moment. I'm a solo developer and my resources are very limited. I can't implement a macOS build system and test everything properly, it would imply considerable amount of work. I neither have a mac and never used one so it would require some investigation...

But, afaik, raylib works on macOS without problems so if anyone is willing to help on that regards, it will be really appreciated. All my tools use a similar build system, based on GitHub Actions and some of the tools are open source. If anyone feels brave enough to implement a macOS build action, that would be great! Here there are some sample workflows, they could be used for reference to implement a macOS equivalent: https://github.com/raysan5/rfxgen/tree/master/.github/workflows

Still, it would require testing...

It will be added on next release!

Any plans on open sourcing this in a late future?

No plans to open source this software. Why do you need it? I could provide the sources per client contract if required.

I was thinking, that you could just provide the src for me, because im incorporating this software into another software for PSX development.

Sorry, I'm trying to make tools for a living, not all my work is free and open source.

does it support the open sourced format: "Basis Universal Texture Compression", kind of KTX, I think: https://github.com/BinomialLLC/basis_universal

(1 edit) (+1)

Not yet, but it's on my roadmap. Probably in a future version.