Aurigma Graphics Mill 5.5 for .NET
LosslessJpegTransform Class
This class enables you to apply lossless operations on the JPEG files.
Namespace:
Aurigma.GraphicsMill.Codecs
Assembly:
Aurigma.GraphicsMill (in Aurigma.GraphicsMill.dll)
Syntax
Visual Basic
Public NotInheritable Class LosslessJpegTransform _ Inherits SyncHandler _ Implements IMetadataWriteSupport, IMetadataReadSupport
C#
public sealed class LosslessJpegTransform : SyncHandler, IMetadataWriteSupport, IMetadataReadSupport
Remarks
This class is intended to operate with JPEG files without recompression. It is useful if you need to modify Adobe® image resource blocks, XMP, EXIF or IPTC data only (without modifying the image), rotate or/and flip the JPEG image without recompression, or recompress only a part of image (e.g. 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).
To use this class, you need to open the JPEG file with the Open(String) method first. After that, if you need to apply the following task:
- Change Adobe® resources, XMP, EXIF or IPTC data without JPEG recompressionuse AdobeResources, Xmp, Exif and Iptc properties to modify metadata, and then use Write(String) method to save changes.
- Rotate JPEG image without recompressionuse the WriteRotated(String, RotateFlipType) method.
- Recompress only the part of the imageuse AlignToSampleSize(Rectangle, JpegAlignToSampleSizeMode), WriteCropped(Stream, Rectangle), and WritePatched(String, Point, Bitmap). 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 to peform lossless rotation or flip: 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 and flip. They will be cropped during tranformation and width and height of the result 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 returns whether dimensions will be changed taking into account the dimensions of currently opened JPEG image and the desired type of transformation.
Do not forget to close the transform object after you made all necessary operations (using the Close()()() method). It will release the file you opened.






