MCPcopy Create free account
hub / github.com/JayXon/Leanify

github.com/JayXon/Leanify @v0.4.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.3 ↗ · + Follow
1,506 symbols 3,155 edges 152 files 209 documented · 14% updated 39d agov0.4.3 · 2015-11-26★ 85220 open issues

Browse by type

Functions 1,291 Types & classes 215
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Leanify Build Status Windows Build status Download Latest Release GitHub license

Leanify is a lightweight lossless file minifier/optimizer. It removes unnecessary data (debug information, comments, metadata, etc.) and recompress the file to reduce file size. It will not reduce image quality at all.

Features

  • Support recursive minifying. (e.g. a PNG inside an APK inside a ZIP)
  • Support a wide variety of file formats.
  • Lightweight, one file, under 1MB, no external dependency.
  • Everything is done in memory, no temporary files.
  • Cross-Platform, support Windows, Linux, Mac.
  • Support traverse directory recursively.
  • Ability to identify file format by its data instead of name.

Disclaimer

I'm not respossible for any consequence of using Leanify.

PLEASE BACKUP THE FILE BEFORE USING LEANIFY!

File Formats

APK file (.apk)

It is based on ZIP.

Note that modifying files inside APK will break digital signature. To install it, you'll have to sign it again.

If you don't want to modify any files inside APK, use -d 1 option.

Comic book archive (.cbt, .cbz)

cbt is based on tar. cbz is based on ZIP.

Microsoft Office document 2007-2013 (.docx, .xlsx, .pptx)

It is based on XML and ZIP.

Office document 1997-2003 (.doc, .xls, .ppt) is not supported.

Design Web Format (.dwf, dwfx)

It is based on ZIP.

EPUB file (.epub)

It is based on ZIP.

FictionBook (.fb2, .fb2.zip)

It is based on XML.

Leanify embedded images.

GFT file (.gft)

It's an image container format found in Tencent QQ.

Leanify the image inside.

gzip file (.gz, .tgz)

Leanify file inside and recompress deflate stream.

Remove all optional section: FEXTRA, FNAME, FCOMMENT, FHCRC.

Icon file (.ico)

Leanify PNG inside, if any.

Java archive (.jar)

It is based on ZIP.

JPEG image (.jpeg, .jpg, .jpe, .jif, .jfif, .jfi, .thm)

Remove all application markers (e.g. Exif) and comments.

Optimize with mozjpeg.

Lua object file (.lua, .luac)

Remove all debugging information:

  • Source name
  • Line defined and last line defined
  • Source line position list
  • Local list
  • Upvalue list

OpenDocument (.odt, .ods, .odp, .odb, .odg, .odf)

It is based on XML and ZIP.

PE file (.exe, .dll, .sys, .ocx, .scr, .cpl)

Leanify embedded resource.

Remove Relocation Table in executable file.

Remove undocumented Rich Header.

Overlap PE Header and DOS Header.

PNG image (.png, .apng)

Remove all ancillary chunks except for:

  • tRNS: transparent information
  • fdAT, fcTL, acTL: These chunks are used by APNG
  • npTc: Android 9Patch images (*.9.png)

Optimize with ZopfliPNG.

RDB archive (.rdb)

It is an archive format found in Tencent QQ.

Leanify all files inside.

Flash file (.swf)

Leanify embedded images.

Recompress it with LZMA.

Remove Metadata Tag.

SVG image (.svg, .svgz)

It is based on XML.

Remove metadata.

Remove empty attributes.

tar archive (.tar)

Leanify all files inside.

XML document (.xml, .xsl, .xslt)

Remove all comments, unnecessary spaces, tabs, line breaks.

XPInstall (.xpi)

It is based on ZIP.

Note that modifying files inside xpi will break digital signature if exist. To install it, you'll have to either delete the META-INF folder inside xpi or sign it again.

XPS document (.xps, .oxps)

It is based on XML and ZIP.

ZIP archive (.zip)

Leanify all files inside and recompress deflate stream using Zopfli.

Remove extra field in Local file header.

Remove Data descriptor structure, write those information to Local file header.

Remove extra field and file comment in Central directory file header.

Remove comment in End of central directory record.

To do list

BMP image (.bmp, .dib)

GIF image (.gif)

Microsoft Compound File Binary

PDF document (.pdf)

Downloads

Stable Releases

Windows Nightly Build

Linux Nightly Build

Usage

Usage: leanify [options] paths
  -i, --iteration <iteration>   More iterations produce better result, but
                                  use more time, default is 15.
  -d, --max_depth <max depth>   Maximum recursive depth, unlimited by default.
                                  Set to 1 will disable recursive minifying.
  -f, --fastmode                Fast mode, no recompression.
  -q, --quiet                   No output to stdout.
  -v, --verbose                 Verbose output.
  --keep-exif                   Do not remove Exif.

Compiling

Windows

  • Visual Studio 2015 or up

Use Leanify.vcxproj

  • gcc 4.7 or up

run build_gcc.bat

Linux, Mac

make

Core symbols most depended-on inside this repo

Shape

Function 1,100
Class 208
Method 191
Enum 7

Languages

C55%
C++45%

Modules by API surface

lib/zopflipng/lodepng/lodepng.cpp224 symbols
lib/miniz/miniz.c129 symbols
lib/tinyxml2/tinyxml2.h118 symbols
lib/tinyxml2/tinyxml2.cpp98 symbols
lib/LZMA/LzmaEnc.c69 symbols
lib/mozjpeg/jsimd_none.c58 symbols
lib/mozjpeg/jpeglib.h53 symbols
lib/LZMA/LzFind.c40 symbols
lib/LZMA/LzFindMt.c33 symbols
lib/zopflipng/lodepng/lodepng_util.cpp30 symbols
lib/zopfli/deflate.c23 symbols
lib/mozjpeg/jdmarker.c23 symbols

For agents

$ claude mcp add Leanify \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page