Skip to content

Convierte rápida y fácilmente imágenes .JPG .JPEG .PNG al formato .ICO para personalizar tu Windows. Una herramienta segura para usuarios de Windows 7 a 11.

Notifications You must be signed in to change notification settings

userdistortion/Axel-ICO-Converter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Axel ICO Converter

Herramienta para la fácil y rápida conversión de imágenes .JPG .JPEG .PNG al formato .ICO, disponible para Windows 7, 8, 10, 11.

Tutorial

  1. Abre la carpeta de Axel ICO Converter
  2. Selecciona 1 imagen .jpg, .jpeg .png
  3. Arrastra la imagen sobre el archovo Axel ICO Converter.bat
  4. Revisa la carpeta de la imagen que seleccionaste, se creará con el mismo nombre en formato .ICO

Historia

Desde el año 2014 que me llamó la atención la personalización del sistema operativo, por aquél entonces yo tenía instalado Windows 7 Professional en mi netbook del gobierno (Conectar Igualdad), por lo que buscando entre programas de internet encontré uno llamado ToYcon.exe, el cual permitía arrastrar imágenes hasta él y generaba automáticamente una imagen .ico. El problema de este programa lo descubrí muy tarde, alrededor de 2020 cuando lo analicé con VirusTotal y encontré que tenía muchas alertas, además de que era entendible el porqué en los videos de YouTube pedían que se desactive el antivirus para usarlo o que lo excluyan de los análisis de los antivirus.

Por eso, después de esta mala experiencia que tuve al darme cuenta de que un programa que solía usar mucho estaba cargado de virus, es que decidí desinstalarlo, pero hoy, viernes 9 de enero de 2026 en vistas de que ando retomando proyectos viejos para la programación con CMD y PowerShell es que decidí ver si es posible o no convertir imágenes al formato ICO usando solamente herramientas de Windows, y sí lo es. El único inconveniente que encontré es el límite de generación de imágenes, el cual no permite crear varios formatos a la vez como 16x16, 32x32, 48x48, 64x64, 128x128, 256x256, sino que al usar .NET sólo puede crear un único formato, y este programa crea los .ico en 256x256 para conservar la calidad. Además, para hacer la conversión a múltiples formatos se requiere de una librería llamada ImageMagick, la cual no quise instalar porque me gusta que los programas que hago se mantengan funcionales con las herramientas de Windows sin instalar archivos.

Entonces mi experiencia me llevó a dejar de usar herramientas conocidas y a dejar de ver videos de YouTube, pero esto me sirvió para considerar aprender cómo crear las bases para estos programas funcionales que pueden correr únicamente con Windows y sus librerías internas, sin descargar nada más que el .bat y .ps1.

Código

Axel ICO Converter.bat

@echo off
title Axel ICO Converter
color 0f
setlocal

set "IMG=%~1"
if "%IMG%"=="" exit /b

powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%~dp0jpg2ico.ps1" "%IMG%"

endlocal

jpg2ico.ps1

param (
    [Parameter(Mandatory=$true)]
    [string]$ImagePath
)

try {
    Add-Type -AssemblyName System.Drawing

    if (-not (Test-Path $ImagePath)) {
        throw "El archivo no existe."
    }

    $Size = 256
    $IcoPath = [System.IO.Path]::ChangeExtension($ImagePath, ".ico")

    $Img = [System.Drawing.Image]::FromFile($ImagePath)

    # FORZAR PixelFormat (evita el error que viste)
    $PixelFormat = [System.Drawing.Imaging.PixelFormat]::Format32bppArgb
    $Bmp = New-Object System.Drawing.Bitmap ($Size), ($Size), ($PixelFormat)

    $Gfx = [System.Drawing.Graphics]::FromImage($Bmp)

    $Gfx.Clear([System.Drawing.Color]::Transparent)
    $Gfx.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
    $Gfx.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::HighQuality
    $Gfx.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality

    # Mantener proporción
    $Ratio = [Math]::Min($Size / $Img.Width, $Size / $Img.Height)
    $NewW = [int]($Img.Width * $Ratio)
    $NewH = [int]($Img.Height * $Ratio)
    $X = ($Size - $NewW) / 2
    $Y = ($Size - $NewH) / 2

    $Gfx.DrawImage($Img, $X, $Y, $NewW, $NewH)

    # PNG en memoria
    $PngStream = New-Object System.IO.MemoryStream
    $Bmp.Save($PngStream, [System.Drawing.Imaging.ImageFormat]::Png)
    $PngBytes = $PngStream.ToArray()

    # Crear ICO válido
    $Fs = [System.IO.File]::Open($IcoPath, [System.IO.FileMode]::Create)
    $Bw = New-Object System.IO.BinaryWriter($Fs)

    # ICONDIR
    $Bw.Write([UInt16]0)
    $Bw.Write([UInt16]1)
    $Bw.Write([UInt16]1)

    # ICONDIRENTRY (0 = 256 px)
    $Bw.Write([Byte]0)
    $Bw.Write([Byte]0)
    $Bw.Write([Byte]0)
    $Bw.Write([Byte]0)
    $Bw.Write([UInt16]1)
    $Bw.Write([UInt16]32)
    $Bw.Write([UInt32]$PngBytes.Length)
    $Bw.Write([UInt32]22)

    $Bw.Write($PngBytes)

    # Limpieza
    $Bw.Close()
    $Fs.Close()
    $PngStream.Dispose()
    $Gfx.Dispose()
    $Bmp.Dispose()
    $Img.Dispose()
}
catch {
    Write-Host ""
    Write-Host "ERROR DETECTADO:" -ForegroundColor Red
    Write-Host $_.Exception.Message -ForegroundColor Red
    Write-Host ""
    Write-Host "DETALLE COMPLETO:" -ForegroundColor Yellow
    $_ | Format-List * | Out-String | Write-Host
}

About

Convierte rápida y fácilmente imágenes .JPG .JPEG .PNG al formato .ICO para personalizar tu Windows. Una herramienta segura para usuarios de Windows 7 a 11.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published