This topic and its replies were posted before the current version of LEADTOOLS was released and may no longer be applicable.
#1
Posted
:
Tuesday, February 12, 2008 10:05:29 AM(UTC)
Groups: Registered
Posts: 17
Hello,
I am trying to split a source TIFF containing X number of pages and merge back X-Y pages to create a target TIFF file. As expected, doing this with GDI+ takes quite a while (approx 1 second per split + merge operation) and is not upto my performance requirements. So I wish to investigate doing the same using RasterImage as follows:
using Leadtools;
using
Leadtools.Codecs;
public bool mergeTiffPagesUsingLead(string[] sourceFiles, string targetFile)
{
bool response = false;
try
{
//Having lines of code do NOT make any difference
//RasterCodecs.CodecsPath = @"C:\Program Files\LEAD Technologies, Inc\LEADTOOLS14.5\Bin\Dotnet\v20";
//RasterCodecs rc = new RasterCodecs();
//rc.PreloadCodecs(1 , 0, "TIF");
//RasterSupport.Unlock(RasterSupportType.TifLzw, "NhY5543d");
//if (RasterSupport.IsLocked(RasterSupportType.TifLzw))
//{
// System.Exception ex = new Exception("Locked: TIFFLZW");
// throw ex;
//}
for (int i = 0; i < sourceFiles.Length; i++)
{
IRasterImage image = new RasterImage(System.Drawing.Image.FromFile(sourceFiles[i])); // WORKS
rc.Save(image, targetFile,
RasterImageFormat.Tif, 1, 1, 1, 1, CodecsSavePageMode.Append); // THROWS EXCEPTION
}
}
catch (Exception ex)
{
throw ex;
}
return response;
}
The issue that I have is rc.Save() method is throwing "Feature not supported" exception. So my question is:
1. Is there an error in the way I am calling the methods?
2. If my way of calling the method is OK, is there a licensing limitation that I have with whatever we have bought?
We are using LeadTools V14.5. The sample TIFF is attached. The serial number related details I will be able to send in an email once requested.
Thanks,
Kaushik
#2
Posted
:
Tuesday, February 12, 2008 10:07:09 AM(UTC)
Groups: Registered
Posts: 17
Here comes the attachment...
#3
Posted
:
Wednesday, February 13, 2008 1:47:18 AM(UTC)
Groups: Guests
Posts: 3,022
Was thanked: 2 time(s) in 2 post(s)
The problem is probably related
to passing the Append flag when there's no initial file to append to.
In all cases, your code is not
very efficient, and there could be a better way to do it. Instead of loading
using GDI, then converting to LEADTOOLS image, then saving as TIFF, you can
simply re-arrange the TIFF pages without decoding and re-coding them using the CompactFile
method.
#4
Posted
:
Wednesday, February 13, 2008 3:36:14 AM(UTC)
Groups: Registered
Posts: 17
This is really helpful, thanks for sharing this info. I got the CompactFile method to work but having hard time trying to figure out the appropriate parameters to be passed, since it is copying all pages now. Here is what I am using:
public bool mergeTiffPagesUsingLead(string sourceFile, string targetFile, int[] pageNumbers)
{
bool response = false;
try
{
RasterCodecs rc = new RasterCodecs();
for (int i = 0; i < pageNumbers.Length; i++)
{
rc.CompactFile(sourceFile, targetFile, pageNumbers[i], pageNumbers[i],
false, 1, 0, false, 1, CodecsSavePageMode.Insert, false, false);
}
}
catch (Exception ex)
{
throw ex;
}
return response;
}
The way I am calling this method is mergeTiffPagesUsingLead("C:\\IN.TIFF", "C:\\OUT.TIFF", new int[3]{1,3,5})
I wish to copy pages 1, 3 and 5 from input to output file.
Your help is highly appreciated.
Thanks, Kaushik
#5
Posted
:
Wednesday, February 13, 2008 3:40:42 AM(UTC)
Groups: Registered
Posts: 17
Never mind, I figured it out. Actually this method is 65 times faster than doing the same with GDI+.
LeadTools is the best!
Thanks a billion,
Kaushik
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.