Fluke Thermal Reader
A Python library for reading and analyzing Fluke thermal imaging files in .is2 format.
Package: fluke-thermal-reader · Import: import fluke_thermal_reader or from fluke_thermal_reader import read_is2
Features
- .is2 reading: Full parsing of Fluke thermal imaging files (.is2)
- Temperature conversion: Raw counts to temperature (°C) with emissivity and reflected background correction (radiative formula)
- Metadata: Camera model, dimensions, emissivity, transmission, background temperature, min/max/avg from file and from JSON when present
- Minimal dependencies: Only
numpy - Tested and working: Fluke Ti480P and Ti300
Installation
From PyPI (when published)
pip install fluke-thermal-reader
From source (development or local release)
From the repository root:
pip install -e .
Or in non-editable mode:
pip install .
Quick start
from fluke_thermal_reader import read_is2
# Load a .is2 file
data = read_is2("thermal_image.is2")
# Thermal matrix (2D, °C)
thermal_data = data["data"]
print(f"Temperature range: {thermal_data.min():.1f}°C - {thermal_data.max():.1f}°C")
# Metadata
print(f"Camera: {data['CameraModel']}")
print(f"Size: {data['size']}") # [width, height]
print(f"Emissivity: {data['Emissivity']}")
print(f"Background temperature: {data['BackgroundTemp']}°C")
Plot with matplotlib
import matplotlib.pyplot as plt
from fluke_thermal_reader import read_is2
data = read_is2("thermal_image.is2")
plt.imshow(data["data"], cmap="coolwarm", aspect="equal")
plt.colorbar(label="Temperature (°C)")
plt.title(f"Thermal image — {data['CameraModel']}")
plt.show()
Returned data structure (read_is2)
| Key | Type | Description |
|---|---|---|
data |
2D ndarray | Temperature in °C per pixel |
FileName |
str | File name |
CameraModel |
str | Thermal camera model |
CameraSerial |
str | Serial number |
size |
[w, h] | Image dimensions |
MinTemp, MaxTemp, AvgTemp |
float | From file/JSON when present |
Emissivity |
float | Emissivity |
Transmission |
float | Transmission |
BackgroundTemp |
float | Background temperature |
thumbnail_path |
str / None | Thumbnail path (if present) |
photo_path |
str / None | Visible photo path (if present) |
Requirements
- Python 3.8+
numpy >= 1.20.0
For visualization: matplotlib (optional).
Tested camera models
Tested and working with:
- Fluke Ti480P
- Fluke Ti300
Other Fluke .is2 files may work; feedback and sample files for additional models are welcome.
Project structure
Fluke_Python/
├── fluke_thermal_reader/ # Main package
│ ├── __init__.py
│ ├── reader.py # read_is2, FlukeReader
│ ├── parsers.py # IS2 parser
│ ├── utilities.py # UnitConversion, calc_equation
│ ├── models.py
│ └── cli.py
├── examples/ # Usage examples
├── tests/ # Tests
├── pyproject.toml
├── requirements.txt
└── README.md
Development and testing
# Editable install
pip install -e ".[dev]"
# Run tests
pytest
Publishing to PyPI
-
Install build tools
pip install build twine
-
Bump version in
pyproject.tomlandfluke_thermal_reader/__init__.py(e.g.0.2.1). -
Build the package (from repo root)
python -m build
This creates
dist/with a.tar.gz(sdist) and a.whl(wheel). -
Check archives (optional)
twine check dist/*
-
Upload to PyPI
twine upload dist/*
Use your PyPI credentials (create an API token at pypi.org/manage/account/token/; username
__token__, password = token).
After upload, users can install with:
pip install fluke-thermal-reader
read_is3 (Future Work)
read_is3(file_path) is planned for Fluke IS3 (video) files.
- Current status: Not implemented — calling it raises
NotImplementedError. - Scope: Video streams (multiple thermal frames), video-level metadata.
- Documentation: The returned data structure will be defined once implementation starts.
If you are interested in IS3 support, please open an issue with sample files and requirements.
License
See the LICENSE file in the repository.
Changelog
0.2.0
- Stable .is2 parser with temperature conversion (emissivity + background temperature)
0.1.x
- Initial release, basic .is2 support
Metadata
Release files for fluke-thermal-reader 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fluke_thermal_reader-0.2.0.tar.gz | 21.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fluke_thermal_reader-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.8 kB
Release files / fluke_thermal_reader-0.2.0.tar.gz
| Download URL | fluke_thermal_reader-0.2.0.tar.gz |
|---|---|
| Size | 21.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1c0e20446fb78142b8244eaba5d8757384fc697544696f312eb0c4267ea3ee0
|
|
BLAKE2b-256 checksum How to use checksums |
5bc9a759eede2e6f41f9f2f55a9de806c6ea1d2665abc2b42fb782e5166967d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / fluke_thermal_reader-0.2.0-py3-none-any.whl
| Download URL | fluke_thermal_reader-0.2.0-py3-none-any.whl |
|---|---|
| Size | 14.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f6ce92b53465ec9e669d67b5a900994f78396d64ad6fe3cda1e2bc182efae44
|
|
BLAKE2b-256 checksum How to use checksums |
2137ea039e6f5b3d820526ace0e25ecfdf6879317391783e9ebaa7ca3ea981c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|