Bobrovsky यदि आपकी फ़ाइल छवि या टाइलों नहीं है आप की जाँच करनी चाहिए उल्लेख किया है। निम्नलिखित में, मैं एक धारा टिफ पढ़ सकते हैं और छवि के ऊपरी बाएं हिस्से काट-छांट करने स्निपेट कोड प्रस्तुत किया है।
using (Tiff input = Tiff.Open(@"imageFile.tif", "r"))
{
// get properties to use in writing output image file
int width = input.GetField(TiffTag.IMAGEWIDTH)[0].ToInt();
int height = input.GetField(TiffTag.IMAGELENGTH)[0].ToInt();
int samplesPerPixel = input.GetField(TiffTag.SAMPLESPERPIXEL)[0].ToInt();
int bitsPerSample = input.GetField(TiffTag.BITSPERSAMPLE)[0].ToInt();
int photo = input.GetField(TiffTag.PHOTOMETRIC)[0].ToInt();
int scanlineSize = input.ScanlineSize();
byte[][] buffer = new byte[height][];
for (int i = 0; i < height; ++i)
{
buffer[i] = new byte[scanlineSize];
input.ReadScanline(buffer[i], i);
}
using (Tiff output = Tiff.Open("splitedImage.tif", "w"))
{
output.SetField(TiffTag.SAMPLESPERPIXEL, samplesPerPixel);
output.SetField(TiffTag.IMAGEWIDTH, width/2);
output.SetField(TiffTag.IMAGELENGTH, height/2);
output.SetField(TiffTag.BITSPERSAMPLE, bitsPerSample);
output.SetField(TiffTag.ROWSPERSTRIP, output.DefaultStripSize(0));
output.SetField(TiffTag.PHOTOMETRIC, photo);
output.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);
int c = 0;
byte[][] holder = new byte[height][];
for (int i = height/2; i < height; i++)
//for (int j = 0; j < height/2 ; j++)
{
holder[i] = buffer[i].Skip(buffer[i].Length/2).ToArray();
output.WriteScanline(holder[i], c);
c++;
}
}
}
System.Diagnostics.Process.Start("splitedImage.tif");
छवि के अन्य हिस्सों के लिए, आप लूप के लिए "i" की सीमा को बदल सकते हैं।
स्रोत
2017-04-17 12:18:28
हे भगवान, यह 40 * गीगाबाइट * है। मुझे लगता है कि यह अतिरिक्त चुनौतीपूर्ण बनाने के लिए केवल 32-बिट ऑपरेटिंग सिस्टम है? –
मैं 64-बिट हार्डवेयर पर चल रहा हूं लेकिन डिस्क से पढ़ना इसे संसाधित करने का आदर्श तरीका होगा। मैं LibTiff.Net में गहराई से देख रहा हूं जिसमें स्कैनलाइन पढ़ने के लिए फ़ंक्शन हैं जो मुझे चाहिए – JWood
क्या छवि रंग, ग्रेस्केल या बिलीवेल है? बिलीवेल के लिए मेरे पास एक देशी कोड समाधान है जो स्मृति समस्या को हल कर सकता है। मुझे ईमेल करें ([email protected])। – BitBank