1
I'm a newcomer to C#. I'm working on a project that created multi-tiff image from single tiff images. The encoder that is return has an extra value for each property.
2
3
System.Object: {System.Drawing.Imaging.ImageCodecInfo}
4
clsid: {System.Guid}
5
Clsid: {System.Guid}
6
codecName: "Built-in TIFF Codec"
7
CodecName: "Built-in TIFF Codec"
8
DllName: null
9
dllName: null
10
filenameExtension: "*.TIF;*.TIFF"
11
FilenameExtension: "*.TIF;*.TIFF"
12
flags: 65543
13
Flags: 65543
14
FormatDescription: "TIFF"
15
formatDescription: "TIFF"
16
FormatID: {System.Guid}
17
formatID: {System.Guid}
18
mimeType: "image/tiff"
19
MimeType: "image/tiff"
20
SignatureMasks: {Length=2}
21
signatureMasks: {Length=2}
22
SignaturePatterns: {Length=2}
23
signaturePatterns: {Length=2}
24
Version: 1
25
version: 1
26
27
Please review my code and let me know what I can do to eliminate the repeating value. Thank you in advance for your help.
28
29
I'm using the below code to accomplish my goals:
30
31
using System;
32
using System.Drawing;
33
using System.Drawing.Imaging;
34
using System.IO;
35
36
namespace FileNetWeb_C
37
{
38
///
39
///
40
public class CImage
41
{
42
string strRetVal;
43
public string ProcessImages(string filename, int NumImages, int nStartPage)
44
{
45
//return value, either error description or the multi-tiff filename
46
try
47
{
48
//file info variable
49
string strFileToSave = filename.Substring(0, filename.Length -4);
50
// Reverse a string by converting the String to a char array // and then use the Array.Reverse method to reverse it and then // convert it back to string: // char [] strArray = strFileToSave.ToCharArray();
51
strRetVal = ReverseString(strFileToSave);
52
53
// get the name of the file to save
54
strFileToSave = string.Concat(strRetVal, nStartPage, ".TIF");
55
56
//multi tiff image
57
System.Drawing.Image imgMulti;
58
imgMulti = System.Drawing.Image.FromFile(filename);
59
//single tiff image to be added to multi tiff image
60
System.Drawing.Image imgToAdd;
61
//encoder parameters for creating the multi-tiff image
62
63
System.Drawing.Imaging.EncoderParameters encParamsCompress;
64
encParamsCompress = new System.Drawing.Imaging.EncoderParameters(1);
65
System.Drawing.Imaging.EncoderParameters encParamsMulti;
66
encParamsMulti = new System.Drawing.Imaging.EncoderParameters(2);
67
68
EncoderParameters encParamsAddFrame = new EncoderParameters(1);
69
EncoderParameters encParamsCloseFrame = new EncoderParameters(1);
70
//encoder objects
71
Encoder encCompress = new Encoder(Encoder.Compression.Guid);
72
Encoder encSave = new Encoder(Encoder.SaveFlag.Guid);
73
//variable for name of file to save multi-tiff image
74
// single tiff image name
75
string strImgFileName = filename;
76
77
strRetVal = ReverseString(strFileToSave);
78
//get the name of the file to save
79
strFileToSave = string.Concat(strRetVal, nStartPage, "multi.TIF");
80
81
//set encoder parameter parameters
82
//C# doesn't convert to byte. encParamsCompress.Param[0] = new EncoderParameter(encCompress, Convert.ToByte(EncoderValue.CompressionCCITT4));
83
encParamsMulti.Param[0] = new EncoderParameter(encCompress, Convert.ToByte(EncoderValue.CompressionCCITT4));
84
encParamsMulti.Param[1] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.MultiFrame));
85
encParamsAddFrame.Param[0] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.FrameDimensionPage));
86
encParamsCloseFrame.Param[0] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.Flush));
87
88
//save the multi-tiff image
89
imgMulti.Save(strFileToSave, GetCodecInfo("image/tiff"), encParamsMulti);
90
for (int iIndex = 2; iIndex <= NumImages; iIndex++)
91
{
92
93
strRetVal = ReverseString(strFileToSave);
94
//get the name of the file to save
95
strFileToSave = string.Concat(strRetVal, iIndex.ToString(), ".TIF");
96
//get next image
97
FileInfo fi = new FileInfo(strImgFileName);
98
//load the image
99
imgToAdd = System.Drawing.Image.FromFile(strImgFileName);
100
//add the image
101
imgMulti.SaveAdd(imgToAdd, encParamsAddFrame);
102
103
}
104
//close the frame
105
imgMulti.SaveAdd(encParamsCloseFrame);
106
imgMulti.Dispose();
107
108
strRetVal = strFileToSave;
109
110
}
111
catch (Exception ex)
112
{
113
114
//log the error and return error message
115
116
strRetVal = ex.Message;
117
}
118
finally
119
{
120
}
121
122
//return the filename
123
return strRetVal;
124
125
}
126
127
private static ImageCodecInfo GetCodecInfo(String mimeType)
128
{
129
int j;
130
ImageCodecInfo[] encoders;
131
encoders = ImageCodecInfo.GetImageEncoders();
132
for(j = 0; j < encoders.Length; ++j)
133
{
134
if(encoders[j].MimeType == mimeType)
135
return encoders[j];
136
} return null;
137
}
138
139
public string ReverseString(string sFile)
140
{
141
char [] strArray = sFile.ToCharArray();
142
Array.Reverse(strArray); string strReverseFileName = new string(strArray); int iLengthToSubtract = strReverseFileName.IndexOf("p");
143
string sReverse = strReverseFileName.Substring(iLengthToSubtract,(strReverseFileName.Length - iLengthToSubtract));
144
strArray = sReverse.ToCharArray();
145
Array.Reverse(strArray);
146
sReverse = new string(strArray);
147
return sReverse;
148
}
149
}
150
}
I'm a newcomer to C#. I'm working on a project that created multi-tiff image from single tiff images. The encoder that is return has an extra value for each property. 2

3
System.Object: {System.Drawing.Imaging.ImageCodecInfo} 4
clsid: {System.Guid} 5
Clsid: {System.Guid} 6
codecName: "Built-in TIFF Codec" 7
CodecName: "Built-in TIFF Codec" 8
DllName: null 9
dllName: null 10
filenameExtension: "*.TIF;*.TIFF" 11
FilenameExtension: "*.TIF;*.TIFF" 12
flags: 65543 13
Flags: 65543 14
FormatDescription: "TIFF" 15
formatDescription: "TIFF" 16
FormatID: {System.Guid} 17
formatID: {System.Guid} 18
mimeType: "image/tiff" 19
MimeType: "image/tiff" 20
SignatureMasks: {Length=2} 21
signatureMasks: {Length=2} 22
SignaturePatterns: {Length=2} 23
signaturePatterns: {Length=2} 24
Version: 1 25
version: 1 26

27
Please review my code and let me know what I can do to eliminate the repeating value. Thank you in advance for your help. 28

29
I'm using the below code to accomplish my goals: 30

31
using System; 32
using System.Drawing; 33
using System.Drawing.Imaging; 34
using System.IO; 35

36
namespace FileNetWeb_C 37
{ 38
/// 39
/// 40
public class CImage 41
{ 42
string strRetVal; 43
public string ProcessImages(string filename, int NumImages, int nStartPage) 44
{ 45
//return value, either error description or the multi-tiff filename 46
try 47
{ 48
//file info variable 49
string strFileToSave = filename.Substring(0, filename.Length -4); 50
// Reverse a string by converting the String to a char array // and then use the Array.Reverse method to reverse it and then // convert it back to string: // char [] strArray = strFileToSave.ToCharArray(); 51
strRetVal = ReverseString(strFileToSave); 52

53
// get the name of the file to save 54
strFileToSave = string.Concat(strRetVal, nStartPage, ".TIF"); 55

56
//multi tiff image 57
System.Drawing.Image imgMulti; 58
imgMulti = System.Drawing.Image.FromFile(filename); 59
//single tiff image to be added to multi tiff image 60
System.Drawing.Image imgToAdd; 61
//encoder parameters for creating the multi-tiff image 62

63
System.Drawing.Imaging.EncoderParameters encParamsCompress; 64
encParamsCompress = new System.Drawing.Imaging.EncoderParameters(1); 65
System.Drawing.Imaging.EncoderParameters encParamsMulti; 66
encParamsMulti = new System.Drawing.Imaging.EncoderParameters(2); 67

68
EncoderParameters encParamsAddFrame = new EncoderParameters(1); 69
EncoderParameters encParamsCloseFrame = new EncoderParameters(1); 70
//encoder objects 71
Encoder encCompress = new Encoder(Encoder.Compression.Guid); 72
Encoder encSave = new Encoder(Encoder.SaveFlag.Guid); 73
//variable for name of file to save multi-tiff image 74
// single tiff image name 75
string strImgFileName = filename; 76

77
strRetVal = ReverseString(strFileToSave); 78
//get the name of the file to save 79
strFileToSave = string.Concat(strRetVal, nStartPage, "multi.TIF"); 80

81
//set encoder parameter parameters 82
//C# doesn't convert to byte. encParamsCompress.Param[0] = new EncoderParameter(encCompress, Convert.ToByte(EncoderValue.CompressionCCITT4)); 83
encParamsMulti.Param[0] = new EncoderParameter(encCompress, Convert.ToByte(EncoderValue.CompressionCCITT4)); 84
encParamsMulti.Param[1] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.MultiFrame)); 85
encParamsAddFrame.Param[0] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.FrameDimensionPage)); 86
encParamsCloseFrame.Param[0] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.Flush)); 87

88
//save the multi-tiff image 89
imgMulti.Save(strFileToSave, GetCodecInfo("image/tiff"), encParamsMulti); 90
for (int iIndex = 2; iIndex <= NumImages; iIndex++) 91
{ 92

93
strRetVal = ReverseString(strFileToSave); 94
//get the name of the file to save 95
strFileToSave = string.Concat(strRetVal, iIndex.ToString(), ".TIF"); 96
//get next image 97
FileInfo fi = new FileInfo(strImgFileName); 98
//load the image 99
imgToAdd = System.Drawing.Image.FromFile(strImgFileName); 100
//add the image 101
imgMulti.SaveAdd(imgToAdd, encParamsAddFrame); 102

103
} 104
//close the frame 105
imgMulti.SaveAdd(encParamsCloseFrame); 106
imgMulti.Dispose(); 107

108
strRetVal = strFileToSave; 109

110
} 111
catch (Exception ex) 112
{ 113

114
//log the error and return error message 115

116
strRetVal = ex.Message; 117
} 118
finally 119
{ 120
} 121

122
//return the filename 123
return strRetVal; 124

125
} 126

127
private static ImageCodecInfo GetCodecInfo(String mimeType) 128
{ 129
int j; 130
ImageCodecInfo[] encoders; 131
encoders = ImageCodecInfo.GetImageEncoders(); 132
for(j = 0; j < encoders.Length; ++j) 133
{ 134
if(encoders[j].MimeType == mimeType) 135
return encoders[j]; 136
} return null; 137
} 138

139
public string ReverseString(string sFile) 140
{ 141
char [] strArray = sFile.ToCharArray(); 142
Array.Reverse(strArray); string strReverseFileName = new string(strArray); int iLengthToSubtract = strReverseFileName.IndexOf("p"); 143
string sReverse = strReverseFileName.Substring(iLengthToSubtract,(strReverseFileName.Length - iLengthToSubtract)); 144
strArray = sReverse.ToCharArray(); 145
Array.Reverse(strArray); 146
sReverse = new string(strArray); 147
return sReverse; 148
} 149
} 150
}
System.Object: 

浙公网安备 33010602011771号