- About Graphics Mill
- What's New?
- Breaking Changes in Graphics Mill 12
- Breaking Changes in Graphics Mill 11
- Features
- Supported File Formats
- System Requirements
- Getting Started
- Working with Image Formats
- Transforming Images (Resize, Rotate, Crop)
- Working with Metadata
- Color Management and Color Reduction
- Drawing Text and Graphics
- Color Keying (Green Screen Removal)
- Channels and Pixel Data
- Color and Tone Correction
- Working with Photoshop (PSD) Files
- Image Filters
- Processing Large Images
- Basics of Image Processing
- Troubleshooting
- Class Library Reference
- Aurigma.GraphicsMill Namespace
- Aurigma.GraphicsMill.Codecs Namespace
- AdobeResourceBlock Class
- AdobeResourceDictionary Class
- BmpReader Class
- BmpSettings Class
- BmpWriter Class
- CIP4 Class
- CodecRegistry Class
- ColorBitDepth Enumeration
- CompressionType Enumeration
- CustomImageReader Class
- CustomImageWriter Class
- CustomReaderCreateCallback Delegate
- DisposalMethod Enumeration
- EpsReader Class
- EpsSettings Class
- EpsWriter Class
- ExifDictionary Class
- ExifItemInfo Class
- FileFormat Enumeration
- Frame Class
- FrameCollection(TFrame) Class
- FrameCollectionBase Class
- GifFrame Class
- GifFrameSettings Class
- GifReader Class
- GifSettings Class
- GifWriter Class
- IImageReader Interface
- IImageWriter Interface
- ImageReader Class
- ImageWriter Class
- IMetadataWriter Interface
- IptcDictionary Class
- IXmpDictionary Interface
- JpegAlignToSampleSizeMode Enumeration
- JpegMarkerException Class
- JpegReader Class
- JpegScale Enumeration
- JpegSettings Class
- JpegWriter Class
- LosslessJpeg Class
- MediaCorruptedException Class
- MediaProviderException Class
- MediaUnsupportedException Class
- MetadataDictionary Class
- MetadataEnumerator Class
- MultiFrameException Class
- OutputIntent Class
- PdfFrame Class
- PdfPage Class
- PdfReader Class
- PdfSettings Class
- PdfTextOutputMode Enumeration
- PdfVtDictionary Class
- PdfVtOptions Class
- PdfWriter Class
- PngFrame Class
- PngReader Class
- PngSettings Class
- PngWriter Class
- RawReader Class
- ResolveImageArgs Class
- ResolveImageCallback Delegate
- ResolveProfileCallback Delegate
- SmartObjectCropTo Enumeration
- SvgReader Class
- SvgReaderSettings Class
- SvgSettings Class
- SvgWriter Class
- TgaReader Class
- TgaSettings Class
- TgaWriter Class
- TiffChannelType Enumeration
- TiffExtraChannel Class
- TiffExtraChannelCollection Class
- TiffExtraChannelEntry Class
- TiffFrame Class
- TiffReader Class
- TiffSettings Class
- TiffWriter Class
- WebPFrame Class
- WebPFrameFormat Enumeration
- WebPFrameSettings Class
- WebPReader Class
- WebPSettings Class
- WebPWriter Class
- WriterSettings Class
- XmpArrayNode Class
- XmpData Class
- XmpDictionaryNode Class
- XmpLocalizedTextItemNode Class
- XmpLocalizedTextNode Class
- XmpNamespace Class
- XmpNode Class
- XmpNodeType Enumeration
- XmpStructNode Class
- XmpTagNames Class
- XmpValueNode Class
- Aurigma.GraphicsMill.Codecs.ClippingPath Namespace
- Aurigma.GraphicsMill.Codecs.Psd Namespace
- Aurigma.GraphicsMill.Drawing Namespace
- Aurigma.GraphicsMill.Drawing.Art Namespace
- Aurigma.GraphicsMill.Drawing.Effects Namespace
- Aurigma.GraphicsMill.Licensing Namespace
- Aurigma.GraphicsMill.Templates Namespace
- Aurigma.GraphicsMill.Transforms Namespace
- Licensing
- End User License Agreement
- Copyright Notices
LosslessJpeg Class
Contains methods and properties used to apply lossless operations on JPEG images.
Namespace:
Aurigma.GraphicsMill.Codecs
Assembly:
Aurigma.GraphicsMill (in Aurigma.GraphicsMill.dll)
Syntax
public sealed class LosslessJpeg : IDisposable
Remarks
This class is intended to operate with JPEG images without recompression. It is useful if you need to modify metadata only (without modifying the image), rotate or/and flip recompression, or recompress only a part of an image. For example, if you add a text caption on the image, it makes sense to recompress only the part of image where the caption is placed and leave all the rest of image intact.
The following lossless operations are supported:
- Changing Adobe® resources, XMP, EXIF or IPTC data use AdobeResources, Xmp, Exif and Iptc properties to modify metadata, and then use Write() methods to save changes.
- Rotating and flipping use the WriteRotated() method.
- Recompressing only a part of the image use AlignToMCUSize(), WriteCropped(), and WritePatched(). See remarks for these methods for more details.
According to JPEG specification an image is represented by blocks of pixels so-called JPEG Minimum Coded Units (MCU). Typically MCU size is a number divisible by 8. That fact allows performing lossless rotation: MCU blocks are rearranged in new order as well as the order of pixels is changed inside each MCU. Examine the situation when width or height of an image is non-divisible by MCU size, it means that the last column or row contains partially-filled MCU blocks. Such images do not support some types of rotation. They will be cropped during transformation and width and height of the resulting image will be divisible by MCU size. If you need to know whether dimensions of your image will be changed after a transformation, you can use the IsTrimmingRequired(RotateFlipType) method. This method indicates whether dimensions will be changed taking into account the dimensions of currently opened image and the desired type of transformation.