{"id":32633895,"url":"https://github.com/team-charls/netpbm-wic-codec","last_synced_at":"2026-03-14T23:18:06.734Z","repository":{"id":45471899,"uuid":"316028496","full_name":"team-charls/netpbm-wic-codec","owner":"team-charls","description":"Windows Imaging Component (WIC) for Netpbm (.pgm, .ppm) files","archived":false,"fork":false,"pushed_at":"2025-09-23T16:35:37.000Z","size":17692,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-23T18:26:38.960Z","etag":null,"topics":["netpbm","pgm","ppm","wic"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/team-charls.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-25T18:55:36.000Z","updated_at":"2025-09-06T21:27:36.000Z","dependencies_parsed_at":"2023-02-12T12:31:26.569Z","dependency_job_id":"b02ee53f-1978-45f9-a760-39a744013505","html_url":"https://github.com/team-charls/netpbm-wic-codec","commit_stats":null,"previous_names":["team-charls/netpbm-wic-codec","vbaderks/netpbm-wic-codec"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/team-charls/netpbm-wic-codec","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/team-charls%2Fnetpbm-wic-codec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/team-charls%2Fnetpbm-wic-codec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/team-charls%2Fnetpbm-wic-codec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/team-charls%2Fnetpbm-wic-codec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/team-charls","download_url":"https://codeload.github.com/team-charls/netpbm-wic-codec/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/team-charls%2Fnetpbm-wic-codec/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281902495,"owners_count":26581164,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-30T02:00:06.501Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["netpbm","pgm","ppm","wic"],"created_at":"2025-10-30T23:56:45.662Z","updated_at":"2026-03-14T23:18:06.726Z","avatar_url":"https://github.com/team-charls.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n  SPDX-FileCopyrightText: © 2020 Team CharLS\n  SPDX-License-Identifier: BSD-3-Clause\n--\u003e\n\n# Netpbm Windows Imaging Component Codec\n\n[![Build and test](https://github.com/vbaderks/netpbm-wic-codec/actions/workflows/msbuild.yml/badge.svg)](https://github.com/vbaderks/netpbm-wic-codec/actions/workflows/msbuild.yml)\n[![REUSE status](https://api.reuse.software/badge/github.com/team-charls/netpbm-wic-codec)](https://api.reuse.software/info/github.com/team-charls/netpbm-wic-codec)\n\nThis Windows Imaging Component (WIC) codec makes it possible to decode .pgm and .ppm files with Windows applications that can leverage WIC codecs.\nIt makes it possible to view Netpbm encoded images in Windows PhotoViewer, Windows Explorer (including thumbnails)\nand import these images in Microsoft Office documents.\n\nIt is a C++ 23 implementation originally based on the [PNM WIC Image Codec project](https://github.com/chausner/PnmWicImageCodec).\nIt leverages the C++/WinRT framework to implement the classic COM components required for a WIC codec and uses Wix for the installer.\n\n## Introduction\n\nNetpbm is the name of an open source package of graphics programs and a programming library.\nIt defines several graphics formats that are not compressed but are easy to exchange between different\nplatforms:\n\n|Type                  |Extension|Magic number     |Color model                             |\n|----------------------|---------|-----------------|----------------------------------------|\n|Portable BitMap       |.pbm     |P1,P4            | 0-1 (white \u0026 black)                    |\n|Portable GrayMap      |.pgm     |P2,P5            | 0-255, 0-65535 * 1 channel (gray scale)|\n|Portable Pixel Map    |.ppm     |P3,P6            | 0-255, 0-65535 * 3 channels (RGB)      |\n|Portable AnyMap       |.pnm     |P1,P2,P3,P4,P5,P6|Several                                 |\n|Portable Arbitrary Map|.pam     |P7               |Several                                 |\n\n### Color Model \\ Color Space\n\nThe Netpbm format only supports to store the color model but not the actual color space.\nSeveral color spaces are used in practice, for example: BT.709 and sRGB.\nAs no color space information is available the codec doesn't provide it through its COM interface.\nIt is up to to displaying application to select the matching color space. For RGB images this is typical sRGB on Windows.\n\n### WIC\n\nThe Windows Imaging Component (WIC) is a built-in codec framework of Windows that makes it possible\nto create independent native image codecs that can be used by a large set of applications.\nWIC is implemented using COM technology. Image codecs for many popular formats are already pre-installed on Windows.\n\n## Installing\n\n### Requirements\n\n- Windows 11 or Windows 10 (version 22H2).\n- x86, x64 or ARM64 processor\n\n### Via GitHub with EXE\n\nGo to the [releases](https://github.com/team-charls/netpbm-wic-codec/releases) page and click on\nAssets at the bottom to show the files available in the release.\nPlease use the appropriate installer that matches your machine's architecture.\n\n\u003e [!NOTE]\n\u003e Microsoft Defender SmartScreen may show a warning about an unrecognized app when running the installer. Click on \"More Info\" + \"Run anyway\" to continue the installation.  \nBoth the installer and the DLL are signed with a certificate. Defender SmartScreen requires however an EV (Extended Validation) code signing certificate, which is only available to commercial organizations.\n\n## Applications that can use the Netpbm WIC codec\n\nThe following application have been validated to work with the Netpbm WIC codec:\n\n- Windows Explorer Thumbnail cache. This functionality allows Windows Explorer to show previews of images.\n- Windows Photo Viewer.  \n Note: On clean installations of Windows 10 this component is installed but not registered. An registry file called restore-windows-photo-viewer.reg\n is provided to restore this functionality. The standard Windows Registry Editor can be used to add import this .reg file.\n- WIC Explorer (sample application from Microsoft). An updated version of this application can be found at \u003chttps://github.com/vbaderks/WICExplorer\u003e\n- ZackViewer \u003chttps://github.com/peirick/ZackViewer\u003e. This viewer can also be used to convert from one image encoding format to another.\n- Microsoft Office applications like Word, Excel, PowerPoint. These applications can, when the NetPbm codec is installed, import .pgm images in their documents. The 32 bit version of Office\nrequires that the x86 version of the codec is installed.\n\n### Windows 11\\10 Microsoft Photos Application not supported\n\nThe standard Windows 11\\10 Microsoft Photos application cannot be used at this moment as it is limited to the\nWIC codecs that are pre-installed on Windows or are provided by Microsoft in the Microsoft Store.\nMicrosoft currently does not make it possible to create WIC codecs that can be uploaded to the Microsoft Store.\n\n## WIC Codec Identity\n\nThe following table provides the codec identification information:\n\n|Property            |                                                                                 |\n|--------------------|---------------------------------------------------------------------------------|\n|Formal Name         |Netpbm Format                                                                    |\n|File Name Extensions|.pgm, .ppm, .pam                                                                 |\n|MIME types          |image/x-portable-graymap, image/x-portable-pixmap, image/x-portable-arbitrarymap |\n\nThe following table lists the GUIDs used to identify the native Netpbm codec components:\n\n|Component        |GUID                                |\n|-----------------|------------------------------------|\n|Container Format |70ab66f5-cd48-43a1-aa29-10131b7f4ff1|\n|Decoder Class ID |06891bbe-cc02-4bb2-9cf0-303fc4e668c3|\n\nThe following table lists the formats that can be decoded:\n\n|Magic|Component Count|Bits per Sample|WIC Pixel Format GUID       |\n|----:|--------------:|--------------:|----------------------------|\n|P5   |              1|              2|GUID_WICPixelFormat2bppGray |\n|P5   |              1|              4|GUID_WICPixelFormat4bppGray |\n|P5   |              1|              8|GUID_WICPixelFormat8bppGray |\n|P5   |              1|      10,12,16*|GUID_WICPixelFormat16bppGray|\n|P6   |              3|              8|GUID_WICPixelFormat24bppRGB |\n|P6   |              3|             16|GUID_WICPixelFormat48bppRGB |\n|P7   |              4|              8|GUID_WICPixelFormat32bppRGBA|\n\nNote *: monochrome images with 10 or 12 bits per sample will be upscaled to 16 bits per sample.\n\n## Manual Build Instructions\n\n1. Clone this repro\n1. Use Visual Studio 2022 17.14 or newer and open the netpbm-wic-codec.sln. Batch build all projects.\n1. Or use a Developer Command Prompt and run use MSBuild in the root of the cloned repository.\n\n### Installation\n\n1. Open a command prompt with elevated rights\n1. Navigate to folder with the netpbm-wic-codec.dll\n1. Execute:\n\n```shell\nregsvr32 netpbm-wic-codec.dll\n```\n\n### Uninstall\n\n1. Open a command prompt with elevated rights\n1. Navigate to folder with the netpbm-wic-codec.dll\n1. Execute:\n\n```shell\nregsvr32 -u netpbm-wic-codec.dll\n```\n\n### Building and code signing\n\nA command file is available to build and sign the WIC DLL and the setup application.  \nInstructions:\n\n- Open a Visual Studio Developer Command Prompt\n- Go the root of the cloned repository\n- Ensure a code signing certificate is available\n- Execute the command `create-signed-builds.cmd certificate-thumb-print time-stamp-url`  \n Note: the certificate thumbprint and time stamp URL arguments are depending on the used code signing certificate.\n\n The WIC DLL and the installer will be signed for the release builds of x86, x64 and ARM64.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteam-charls%2Fnetpbm-wic-codec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteam-charls%2Fnetpbm-wic-codec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteam-charls%2Fnetpbm-wic-codec/lists"}