Convert TIFF, JPEG, PNG, RAW, PSD, WebP and 35+ image formats on Windows servers — no codec packs required.
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016 / 2019/2022 Server
and
Docker / Citrix / Wine
Total Image Converter X is a server-side SDK that converts TIFF, JPEG, PNG, BMP, PSD, WebP, RAW (NEF, CR2, CR3, ARW, ORF, RAF, DNG, and more), and 35+ other image formats — without external codec packs or imaging frameworks on the server. It runs headless: no GUI, no dialogs, no popups. Total Image Converter X ships with both a command-line binary and an ActiveX/COM interface, so it drops into ASP, PHP, .NET, Python, Ruby, Java, and any other COM-aware backend. The full list of supported image formats:
The program processes images on the fly. No intermediate files are needed. Multi-threaded conversion engine maximizes throughput on multi-core servers.
High converting speed and batch conversions result in a simple and boredom-free process. Try it for free (30 days trial period, no limitations) and find out that it is really worth its money.
Some of the currently supported file format conversions:
|
|
|
(includes 30 day FREE trial)
(only $259.90)
string src = @"C:\test\Source.tiff";
string dest = @"C:\test\Dest.jpg";
var cnv = new ImageConverterX();
cnv.Convert(src, dest, "-cJPG -log c:\\test\\Image.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\ImageConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.tiff";
var outPath = Path.GetTempFileName() + ".jpg";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"{srcPath} {outPath}";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
int sleepCounter = 10;
while(!File.Exists(outPath) && sleepCounter > 0)
{
System.Threading.Thread.Sleep(1000);
sbLogs.AppendLine("sleep...");
sleepCounter--;
}
if (File.Exists(outPath))
sbLogs.AppendLine("Conversion complete successfully.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("ImageConverter.ImageConverterX")
C.Convert "c:\source.bmp", "c:\dest.tif", "-cTIFF -log c:\Image.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("ImageConverter.ImageConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.tiff", "C:\www\ASP", "-cpdf -log c:\Image.log")
set C = nothing
$src="C:\\test\\test.jpg";
$dest="C:\\test\\test.gif";
if (file_exists($dest)) unlink($dest);
$c= new COM("ImageConverter.ImageConverterX");
$c->convert($src,$dest, "-c gif -log c:\\test\\Image.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('ImageConverter.ImageConverterX')
src = "C:\\test\\test.tiff"
dest = "C:\\test\\test.jpg"
c.convert(src, dest, "-c JPG -log c:\\test\\Image.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("ImageConverter.ImageConverterX")
src = "C:\\test\\test.tiff"
dest = "C:\\test\\test.jpg"
c.convert(src, dest, "-c JPG -log c:\\test\\Image.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('ImageConverter.ImageConverterX');
c.Convert('c:\test\source.tiff', 'c:\test\dest.jpg', '-cJPG -log c:\test\Image.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("ImageConverter.ImageConverterX");
c.Convert("C:\\test\\source.tiff", "C:\\test\\dest.jpg", "-c JPG");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.tiff"; my $dest = "C:\\test\\test.jpg"; my $c = CreateObject Win32::OLE 'ImageConverter.ImageConverterX'; $c->convert($src, $dest, "-c JPG -log c:\\test\\Image.log"); print $c->ErrorMessage if -e $dest;
"We accept customer artwork in every format imaginable: PSD with layers, CMYK TIFF for offset printing, PNG with transparency, the occasional RAW from photographers. Total Image Converter X normalizes everything to print-ready CMYK TIFF and a web-preview JPEG in one pipeline. Five years on the encoder boxes, no surprises. Throughput is around 40 images per second on our hardware for 24-megapixel input."
Erik W.
Senior Backend Developer at a print-on-demand platform
"Brokers upload listing photos straight from phones and DSLRs — HEIC, RAW, oversized JPEG, the lot. Total Image Converter X resizes to three responsive variants and writes WebP for the public-facing site. The .NET wrapper plugs into our existing pipeline; the -log output is one structured line per file, easy to ship to our log aggregator. Headless on Windows Server Core, no Office, no Photoshop, no licensing surprises."
Anjali K.
DevOps Engineer at a real-estate listings SaaS
"We archive scanned patient records as multi-page TIFF and need to publish PDF copies for the clinician portal. Total Image Converter X handles 600-DPI grayscale TIFF stacks reliably, applies the watermarks we need for audit trails, and produces ISO-standard PDF/A. The CLI is deterministic across runs, which matters for chain-of-custody. Five years of unattended overnight conversions, no failures we can blame on the converter."
Paolo M.
CTO at a medical-imaging archive
"Bundled Total Image Converter X into our photo-management product under the Royalty-Free License. The one-time per-project fee was a fraction of what ImageMagick-based commercial wrappers wanted for redistribution rights. Our installer ships and registers the ActiveX, our app calls it directly, end users see only our UI. The 32-bit ActiveX limitation cost us a couple of days of pipeline rework, but support was responsive when we asked about workarounds."
Greta H.
Independent Software Vendor
"Our merchants upload product photos in JPEG, PNG, and the occasional PSD with embedded layers. We need clean WebP at three sizes plus a thumbnail strip per product. Total Image Converter X gives us deterministic output: same input, same flags, bit-identical bytes on the disk. That's what we need for our CDN cache invalidation logic. Stable and predictable across four years of production use."
Hideo T.
Lead .NET Developer at an e-commerce platform
Updated Mon, 04 May 2026
(only $259.90)
new COM("ImageConverter.ImageConverterX") in PHP, new ImageConverterX() in .NET, win32com.client.Dispatch in Python, WIN32OLE.new in Ruby. Alternatively, the ImageConverterX.exe command-line binary can be invoked from any process, scheduler, or shell script. Direct PDF streaming via ConvertToStream is also available for ASP/PHP web responses.-r <WxH> for resize (absolute or percent), -Rotate <90|180|270> for rotation, -Flip Horizontal|Vertical for mirroring, and -c <format> for output. Watermarks: -WatermarkText "Confidential" -WatermarkColor 0xFF0000 for text or -WatermarkImage logo.png for image overlay. Color depth: -bpp 1|8|24. CMYK to RGB conversion is automatic when output format does not support CMYK.-MultipageTIFF to combine a folder of single-page images into one TIFF, and -combine to merge multiple images into one PDF. -Recurse walks subdirectories; -kfs mirrors the folder structure on the output side instead of flattening everything into one bucket.Updated Mon, 04 May 2026
(only $259.90)
Download free trial and convert your files in minutes.
No credit card or email required.