←Select platform

CodecsTransformMarkerCallback Delegate

Summary
Handles the processing of every JPEG marker present in the file transformed by RasterCodecs.Transform.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public delegate CodecsTransformMarkerAction CodecsTransformMarkerCallback( 
   int id, 
   RasterNativeBuffer buffer, 
   CodecsTransformFlags transform 
) 
typedef LTCodecsTransformMarkerAction (^LTCodecsTransformMarkerCallback)(NSInteger markerId, unsigned char *buffer, NSUInteger length, LTCodecsTransformFlags transform) 
public CodecsTransformMarkerAction OnCodecsTransformMarkerCallback(int id, RasterNativeBuffer buffer, CodecsTransformFlags transform) 
public delegate CodecsTransformMarkerAction CodecsTransformMarkerCallback(  
   int id, 
   RasterNativeBuffer buffer, 
   CodecsTransformFlags transform 
) 
def CodecsTransformMarkerCallback(self,id,buffer,transform): 
# id : Int32, buffer : RasterNativeBuffer, transform : CodecsTransformFlags 

Parameters

id
ID of the JPEG marker. The JPEG markers are uniquely identified by a byte value. Possible values are 1 to 254. (0 and 255 are not allowed.)

buffer
A pointer to the memory buffer containing the marker data. RasterNativeBuffer.Length contains the size in bytes of the JPEG marker. The size will be less than 65535. If this value is 0, then the marker does not have any extra data and  buffer should be ignored.

transform
Flags that indicate the transform to be performed. These are the same flags passed to the RasterCodecs.Transform method.

Return Value

A CodecsTransformMarkerAction enumeration member that determines the action taken by the RasterCodecs after the callback is called. Possible values are:

Value Description
CodecsTransformMarkerAction.Default Successful. The default processing for this marker can be performed
CodecsTransformMarkerAction.Ignore Successful. Do not process this marker and do not write it to the file
CodecsTransformMarkerAction.Abort Abort the process and do not transform anymore markers
Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
public void TransformExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
 
   string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_Transform.cmp"); 
 
 
   // Load the source image with markers 
   Debug.WriteLine("Loading the source image with all markers"); 
   codecs.Options.Load.Markers = true; 
   RasterImage srcImage = codecs.Load(srcFileName); 
 
   // Show the markers loaded, if any 
   Debug.WriteLine("These markers were loaded:"); 
   foreach (RasterMarkerMetadata marker in srcImage.Markers) 
   { 
      byte[] data = marker.GetData(); 
      codecs.WriteMarker(srcFileName, 1, marker); 
      // codecs.WriteMarker(stream, 1, marker); 
      codecs.WriteTransformMarker(marker.Id, data, 0, 1); 
      Debug.WriteLine(" {0}, DataSize:{1}", marker.Id, data.Length); 
   } 
 
   codecs.Transform( 
      srcFileName, 
      destFileName, 
      CodecsTransformFlags.Rotate90, 
      1, 
      CodecsTransformMarkerCallback); 
 
   // Clean up 
   codecs.Dispose(); 
} 
 
CodecsTransformMarkerAction CodecsTransformMarkerCallback(int id, RasterNativeBuffer buffer, CodecsTransformFlags transform) 
{ 
   Debug.WriteLine("Transforming: id: {0}, Data Length: {1}, transform: {2}", id, buffer.Length, transform); 
   return CodecsTransformMarkerAction.Default; 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.*; 
import java.net.*; 
import java.nio.file.Paths; 
import java.util.*; 
import java.time.Instant; 
import java.time.Duration; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.codecs.RasterCodecs.FeedCallbackThunk; 
import leadtools.drawing.internal.*; 
import leadtools.imageprocessing.*; 
import leadtools.imageprocessing.color.ChangeIntensityCommand; 
import leadtools.svg.*; 
 
 
RasterCodecs codecs; 
 
public void transformExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   codecs = new RasterCodecs(); 
 
   String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp"); 
   String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1_Transform.cmp"); 
 
   // Load the source image with markers 
   System.out.println("Loading the source image with all markers"); 
   codecs.getOptions().getLoad().setMarkers(true); 
   RasterImage srcImage = codecs.load(srcFileName); 
 
   // Show the markers loaded, if any 
   System.out.println("These markers were loaded:"); 
 
   for (RasterMarkerMetadata marker : srcImage.getMarkers()) { 
      byte[] data = marker.getData(); 
      ILeadStream srcFileStream = LeadStreamFactory.create(srcFileName); 
      codecs.writeMarker(srcFileStream, 1, marker); 
      codecs.transform(srcFileName, destFileName, CodecsTransformFlags.ROTATE_90, 1, CodecsTransformMarkerCallback); 
      System.out.printf(" %s, DataSize:%s%m", marker.getId(), data.length); 
   } 
 
   // Clean up 
   codecs.dispose(); 
} 
 
CodecsTransformMarkerListener CodecsTransformMarkerCallback = new CodecsTransformMarkerListener() { 
 
   @Override 
   public CodecsTransformMarkerAction OnCodecsTransformMarkerCallback(int id, RasterNativeBuffer buffer, 
         CodecsTransformFlags transform) { 
      buffer.getData(); 
      codecs.writeTransformMarker(id, buffer.getData(), 1, 1); 
      System.out.printf("Transforming: id: %s, Data Length: %s, transform: %s%n", id, buffer.getLength(), transform); 
      return CodecsTransformMarkerAction.DEFAULT; 
   } 
 
}; 
Requirements

Target Platforms

See Also

Reference

Leadtools.Codecs Namespace

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Codecs Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.