K2ImageLCD

K2ImageLCD is a powerful advanced tool designed for converting and optimizing images for low-resolution monochrome LCD screens (up to 240×128 real pixels).
Unlike simple converters, this software enables granular and professional control through dynamic masks, letting you apply different effects, brightness levels and edge algorithms to specific zones of the same image — solving common issues such as uneven lighting or loss of detail in critical areas.

Freeware Up to 240×128 px Windows · Installer BMP · JPG · PNG · GIF · TIFF
K2ImageLCD for Windows Freeware · Installer included · Latest version
DOWNLOAD K2ImageLCD
⚠ Windows blocking the installation?
Check the FAQ

Video Tutorials

Part 1 – Basic Controls and Threshold
Part 1 Basic Controls & Threshold
Part 2 – Masks
Part 2 Masks
Part 3.1 – Independent Thresholds
Part 3.1 Independent Thresholds
Part 3.2 – Text and Other Controls
Part 3.2 Text & Other Controls
01

Introduction

K2ImageLCD is a professional tool designed to convert images into binary dot maps for low-resolution monochrome LCD screens. It transforms any image — photograph, logo or illustration — into on/off pixels that can be displayed on a real LCD.

The main challenge with small LCDs is that each pixel only has two states: on or off. Simple black-and-white conversions rarely produce good results. K2ImageLCD solves this with a system of independent zones called masks, which let you apply different parameters to each part of the image.

Who is this for?
For firmware and embedded-systems developers using Arduino, STM32, ESP32, MSP430 or any microcontroller driving monochrome LCD screens, with output for LCD controllers T6963 or AK0108.
02

Smart Processing Logic

Instead of a simple conversion, K2ImageLCD uses a real-time rendering engine that analyses the image pixel by pixel to ensure the final result is readable on very low-resolution screens.

Dynamic Binarization Algorithm

El programa no se limita a convertir la imagen a blanco y negro. Utiliza un sistema de Umbralización por Rangos. En lugar de un punto de corte fijo, el motor analiza la luminancia de cada zona y permite definir una "ventana" de brillo. Solo los píxeles que caen dentro de ese rango de amplitud se activan en el LCD. Esto permite rescatar detalles en imágenes oscuras que otros programas simplemente convertirían en una mancha negra.

Intelligent Edge and Contour Analysis

For logos and vector graphics, the software implements a brightness-gradient algorithm that detects colour differences between adjacent pixels.

Contour isolationPermite extraer solo la "silueta" de un objeto.
LineOne modeFunción de optimización que reduce el grosor de cualquier borde detectado a la mínima unidad (1 píxel), evitando que los gráficos se vean toscos o "empastados" en la pantalla monocromática.
03

Main Features

Independent mask system
Up to 15 image zones each with their own independent colour and threshold parameters, allowing every area to be treated differently in a single pass.
Real-time LCD simulation
Preview with the exact colours of the target screen — blue, green, yellow, orange, negative — before exporting.
Direct code generation
Exports the result as an array ready to paste into firmware, in binary, decimal or hexadecimal format, compatible with T6963 and AK0108 LCD controllers.
04

Workflow

The typical process follows these steps. Order matters: some controls lock as soon as you move to the next phase.

  1. Import the image — Load the source file (BMP, JPG, PNG, GIF, TIFF).

  2. Configure the LCD resolution — Set the actual width and height of your screen before doing anything else.

  3. Adjust position, zoom and stretch — Frame the image within the LCD area. This step must be completed before creating masks.

  4. Adjust colour (optional) — Correct brightness, contrast or hue if the image requires it.

  5. Set the threshold — Define which tones are converted to lit pixels. Press Auto for an automatic starting point.

  6. Create masks (if needed) — For images with problematic zones, create one mask per zone and adjust each threshold independently.

  7. Add text (optional) — Overlay labels using any font installed on Windows.

  8. Final manual editing (optional) — Touch up individual pixels. This step locks all other controls.

  9. Generate code — Export the result as a data array ready for your firmware.

05

The Interface

AreaDescription
Left panelShows the original image with position, zoom and stretch adjustments applied. Also displays the active mask with the brush overlay.
Panel derechoMuestra el resultado digitalizado tal y como aparecería en el LCD real, con los colores de simulación activos. Enmarcado en dorado para indicar el área activa.
Controls panelPosition/size, colour, threshold, masks, text and export controls.
Note
The gold border delimits the active area according to the configured LCD resolution. Pixels outside that border are not part of the final result.
06

Import Image

Go to File → Import image or press the Load button. Supported formats: BMP, JPG, PNG, GIF and TIFF. When importing, if you had unsaved changes in a previous project, the program will ask whether you want to save them.

Tip
For best results, use images with good contrast between subject and background. Photos with few flat colours are the easiest to digitize.
07

LCD Colour Simulation

The right panel can show the result with the exact colours of the target LCD. Access via Options → LCD Colour.

Black and white
Blue and white
Green and black
Lime green
Yellow
Orange

The Custom option lets you define the exact two colours of your screen using a colour picker.

LCD negativo
Si trabajas con un LCD negativo (fondo oscuro), selecciona la simulación correspondiente. La imagen que se veía "en negativo" aparecerá ahora correctamente en positivo visual, lo que facilita ajustar los umbrales.
08

Position and Size

These controls frame exactly which part of the image will appear on the LCD. They must be set before creating any mask, as once mask work has started these controls are locked.

Mouse drag

Click and drag on the left panel to freely reposition the image.

Mouse wheel

Zooms in or out while the cursor is over the left panel. You can also use the zoom bar.

Stretch H / V

Distorts the image horizontally or vertically, useful for matching the aspect ratio to the LCD.

Rotate

Rotates the image. Useful for images taken in the wrong orientation.

Align

Places the image in the top-left corner of the LCD area automatically.

Precision cursor

Moves the image pixel by pixel with more precision than free mouse dragging.

09

Colour Adjustments

These modify the image before the threshold converts it to black and white. Each mask has its own colour values, independent of the rest.

ControlEffect
BrightnessIncreases or reduces the overall luminosity of the zone. Useful for underexposed images.
ContrastExpands or reduces the difference between light and dark tones. High contrast makes binarization easier.
ColourAdds or removes saturation without altering brightness. The brightness threshold works with luminance, so this control does not affect it.
HueRotates the colour wheel: shifts all image colours by X degrees across the spectrum.
R / G / B GainAmplifies or attenuates each channel separately. Example: for a more yellow image without increasing brightness, raise R and G and lower B.
Important note
Colour controls alter the image and, consequently, the result. Threshold controls, on the other hand, only affect the result, not the original image.
10

Pixelation Smoothing

When the original image has lower resolution than the working area, scaling it up causes pixelation. The Smooth pixelation option applies interpolation to reduce it.

ModeResultRecommended for
No smoothingVisible pixelation, hard edges.Pixel art, images already in pure black and white.
BicubicModerate smoothing, good detail.General use.
BilinearMedium smoothing.General use.
High-quality bicubicBest sharpness/smoothing balance.Photos and complex logos.
High-quality bilinearCan be slightly blurry.Specific cases.
Warning
If the source image is already in pure black and white (no greyscale), do not use smoothing: interpolation creates artificial gradients between dots that alter the final result.
11

Brightness Threshold

The brightness threshold is the main digitization control. It defines which image tones are converted to lit pixels. It works on a visual bar ranging from black (0) to white (255).

Interactive example — drag the controls
Amplitude
Level

Level shifts the window towards dark or light tones. Amplitude controls the width: high amplitude activates more tones, low amplitude is more selective.

Auto button
Press Auto to let the program automatically calculate the Level and Amplitude values as a starting point. They are not always optimal, but they provide a good base from which to adjust.

Threshold by LCD type

LCD typeThreshold zoneWhy
Positive (light background, dark pixels)Low / dark tonesLit pixels represent dark areas of the image.
Negative (dark background, light pixels)High / light tonesThe program generates the negative that the LCD inverts visually.
12

Edge Threshold

While the brightness threshold works with each pixel's luminance, the edge threshold is designed to extract contours and silhouettes, especially in logos and flat-colour graphics where no gradients exist.

SensitivityControls how much brightness must differ between neighbouring pixels to be considered an edge. High sensitivity detects subtle edges; low sensitivity only detects sharp changes.
Line One optionForces the width of all detected edges to exactly 1 pixel, eliminating duplicates. Very useful on low-resolution screens where 2-pixel lines take up too much space.
Combined use
Brightness Threshold and Edge Threshold can be enabled simultaneously in the same mask. For example: the interior of an image with brightness threshold + the outer contour with edge threshold.
13

What is a mask?

A mask is a delimited zone of the image to which its own independent colour and threshold parameters are applied. The program supports up to 15 simultaneous masks, plus the background (main image), which always exists as the base layer.

Masks are the solution when an image has zones with very different lighting, contrast or colour conditions. Without masks, any adjustment that improves one zone worsens another.

Work order
Position and size controls lock automatically as soon as the first mask is created. Make sure you have correctly framed the image before starting.
14

Creating Masks

Press Add mask to create a new one. Its shape can be defined in three ways:

Manual (Brush)

Paint over the left panel to add zones. Subtract mode removes zones. Brush size is adjusted with the slider or the mouse wheel.

Automático

Clic en la imagen y el programa detecta el borde del área por similitud de color. La Sensitivity controla cuánta diferencia de color se tolera como borde.

By Colour

Select a colour from the image and the program marks all pixels of that colour in one go. The level bar adjusts how many similar tones are included.

Subtract zones

Every mode has a subtract variant. Use it to correct zones included by mistake or to refine the edges of an automatic selection.

Recommended strategies

Flat-colour logosUse the By Colour mode. Define one mask per logo colour. This is the fastest and most precise approach.
PhotographsStart with low automatic sensitivity and manually subtract any incorrect zones.
Hard-to-detect edgesIf the edge is not detected well from the inside, detect from the outside and then subtract the exterior. You can undo the last operation with Ctrl+Z.
15

Fill Types

Each mask can be configured with a fill type for its interior and optionally for its outer border.

Interior fill

By thresholdThe result is calculated by applying the brightness and/or edge threshold. This is the main mode for photographic images.
Solid ONAll interior pixels are lit (black on positive LCD). Useful for solid fills and freehand drawing.
Solid OFFAll interior pixels are turned off (white). Useful for separation zones or light backgrounds.
Solid NOTInverts the current value of each pixel in the zone. Allows two masks to overlap with a differential effect.

Outer border

Each mask can have an outer border with its own fill type (ON, OFF or NOT) and adjustable thickness using the Increase/Decrease thickness buttons.

Caso de uso clásico
En un logotipo donde el texto "Sistemas" se fusiona con el texto "K2": define una máscara para "Sistemas" con relleno sólido OFF (blanco) y añade un borde con relleno ON (negro). El texto queda claramente separado del elemento adyacente.
16

Mask Order and Name

LabelEach mask can have a descriptive name (hair, eyes, mouth, K2…) to easily identify it in the list.
Front / BackControls the compositing order. Masks at the front can overwrite those at the back in overlapping zones.
Invert maskInverts the pixel selection. Useful when it is easier to select the exterior than the interior.
Delete maskDeletes the selected mask and all its settings.
17

Independent Thresholds per Mask

Each mask has its own colour and threshold controls, completely independent from the rest. This is the most powerful feature of the program.

Practical example: photographic portrait

ZoneTypical problemMask solution
Dark hairDetail is lost or merges with the background.Mask with threshold adjusted to dark tones.
Hair highlightsWith threshold set for dark hair, highlights disappear.Second mask only for highlights, threshold at light tones.
EyesIf adjusted for eyes, the mouth disappears.Eye mask with its own threshold.
MouthIf adjusted for mouth, the eyes are overloaded.Independent mouth mask.
BackgroundTakes up space and distracts from the subject.Background mask with solid OFF fill or clipped to the silhouette.

Use with negative LCD

BackgroundSet the background (main image) to Solid ON to light all background pixels.
MasksConfigura cada zona con relleno OFF en lugar de ON, para "apagar" los píxeles de la figura.
ThresholdsMove the thresholds towards light tones.
18

Text Overlay

Text can be overlaid using any font installed on Windows. The text is converted to pixels in the same way as the image.

Adding and positioning text

  1. Position the cursor over the right panel. The cursor changes to text shape.

  2. Click where you want to insert the text. The editor opens.

  3. Type the text, choose font, size and style (bold, italic).

  4. Select the fill type and confirm.

Text fill types

ONText is drawn in black (lit pixels).
OFFText is drawn in white (unlit pixels). Useful on dark backgrounds.
NOTText inverts the pixels beneath it: it appears black on light backgrounds and white on dark ones. Guarantees readability on any background.

Click and drag to reposition the text. Double-click to edit its properties again. The program supports up to 15 simultaneous text elements.

19

Manual Editing

The Edit result button activates a mode in which the cursor becomes a pencil to modify individual pixels directly on the digitized result.

  • The right mouse button toggles between generating ON (lit) and OFF (unlit) pixels.
  • The brush size is adjusted with the mouse wheel.
  • Ideal for removing small noise dots generated by the automatic algorithms.
Important
Manual editing locks all other controls. If you need to re-adjust the threshold or masks, you must press Unlock result, but all manual changes will be lost. This step should always be the last one before exporting.
20

Generate Code

Press Generate code to open the export dialog.

OptionDescription
LabelNombre del array o variable en el código generado.
FormatBinary, Decimal or Hexadecimal depending on what your compiler or LCD library accepts.
ControllerTarget LCD controller model (determines the bit order within each byte).
ConnectorLCD pin configuration.
Pin orientationTop or Bottom: determines whether data is read top to bottom or in reverse.

When you press Generate code, the result is automatically copied to the clipboard ready to paste into your IDE.

const uint8_t mi_imagen[] = { 0xFF, 0x81, 0xBD, 0xA5, 0xA5, 0xBD, 0x81, 0xFF, 0x00, 0x7E, 0x42, 0x5A, 0x5A, 0x42, 0x7E, 0x00, /* ... */ };
Export as TXT
You can also save the code to a plain text file from File → Save as TXT.
21

Projects

K2ImageLCD saves the complete work state in project files with the .K2Image extension: imported image, masks, colour and threshold parameters, text, LCD simulation and position.

SaveSaves the current project. If it is the first time, it asks for a location and name.
LoadOpens an existing .K2Image project.
Add result maskIncorporates the current result as an additional mask, useful for combining several work passes.
Close with changes
If you try to close with unsaved changes, a confirmation dialog will appear. The program also asks when importing a new image over an existing project with changes.

Interface language

The interface is available in Spanish and English. Change the language from Options → Language. The preference is saved automatically for the next session.

Installation FAQ

1. Why is this software not digitally signed?

This software is a completely free, non-profit project. Obtaining and maintaining an official Microsoft digital signature involves a high annual cost that is unfortunately not viable for a free project.

2. How can I verify that the application is safe?

Transparency is our priority. Before running the installer, you can scan it on VirusTotal or any other external security tool. There you can verify, using dozens of antivirus engines simultaneously, that the file is 100% free of viruses and malware.

3. Windows is blocking the installation and won't let me continue — what should I do?

This happens due to a Windows 11 feature called Smart App Control. This tool automatically blocks any software that is not digitally signed, regardless of whether it is safe or not. As an independent developer, the system prevents installation by default.

To install the application, you can temporarily disable this feature by following these steps:

  1. Open the Windows Security menu.

  2. Go to the App & browser control section.

  3. Click on Smart App Control settings.

  4. Change the status to Off.

💡 Note
Once disabled, Windows will allow you to run the installer without any issues. If you wish, you can re-enable the protection after the installation is complete.

WHAT DOES K2ImageLCD OFFER?

  • Maximum resolution up to 240×128 real pixels.
  • System of up to 15 masks with completely independent colour and threshold parameters.
  • Automatic edge detection with sensitivity control and Line One mode.
  • Visual simulation of any LCD colour before exporting.
  • Code generation in binary, decimal or hexadecimal, ready to paste into firmware.
  • Interface available in Spanish and English, with preference saving.

FORMATS AND COMPATIBILITY

  • Imports BMP, JPG, PNG, GIF and TIFF.
  • Exports code compatible with T6963 and AK0108 LCD controllers.
  • Text fonts from the installed Windows system.
  • Projects saved in .K2Image format to continue work in another session.
  • Free distribution for personal and professional use, no registration or activation required.
  • Desktop application for Windows with installer and uninstaller included.