- AddedThe website copy has been comprehensively revamped, with a
significant enhancement to the technical explanations. This
update aims to make the underlying mechanics of JFIF to JPG conversion more accessible to users.
- ImprovedEnhanced the converter's UI/UX and streamlined the
conversion process for greater efficiency.
- ImprovedA mature WebAssembly/JS library has been integrated to
enhance the converter's robustness. This implementation leverages
a WebAssembly-wrapped C/C++ module for JPEG parsing.
- AddedOutput Assembly: The processed segments are assembled into a
Blob object using new Blob(segments, { type: 'image/jpeg'
}). An ObjectURL is then generated from this Blob. This process bypasses recompression, resulting in a
standard-compliant JPG file.
- AddedStripping/Replacing the APP0 segment: While iterating through
the markers, upon identifying an APP0 (0xFFE0) and
recognizing the JFIF header, its data is skipped. Subsequent segments are written in their original order into
a new
buffer. To preserve metadata such as EXIF, ICC, or XMP, the original bytes of other segments (like APP1, APP2,
etc.) can
be directly copied over.
- AddedDirectly manipulating the binary stream: diverging from the
decode/re-encode pipeline of Image/Canvas, we now use
"FileReader.readAsArrayBuffer" to obtain the raw bytes and parse JPEG markers (such as SOI, APPn,
DQT, SOF, DHT,
SOS, EOI)
directly on the "Uint8Array"
- AddedThe converter's underlying architecture has been
refactored by introducing a new technology that completely replaces the
legacy Canvas solution. This new method identifies and removes the APP0 segment from JFIF files while leaving
all other
APP segments unaltered, thereby ensuring truly lossless JFIF to JPG conversion.
- ImprovedOptimized the ZIP compression logic, achieving an 80%
increase
in compression speed and download speed.
- AddedLaunch the basic JFIF to JPG converter, which utilizes Canvas
transcoding technology but may slightly compress image
quality.