2017-07-14 5 views
-1

jemand auf Manipulation einer Tiff-Datei (mit BitMiracle.LibTiff.NET) erfahren?Tiff manipulation mehrere thread C#

Ich brauche mehrere Threads, um ein großes Bild für eine bessere Leistung zu ändern.

Die Berechnung auf das Bild des Bildes eine Maskierung für erstellen 2 diffrent Bilder mit dem positiven und negativen Maske (zum Beispiel einer Operation ähnlich):

buffer2[y][x] = (byte)(buffer[y][x] & maskBuffer[y % maskTiffHeight][x % (maskTiffWidth * tiffBpp/8)]);

Jede vorschlagen?

Danke

Dan

Antwort

0

Ich versuche, dass und scheint arbeiten:

Parallel.For(0, sourceBuffer.Length, i => 
        { 
         destbuffer[i] = new byte[sourceBuffer[i].Length]; 
         destbuffer2[i] = new byte[sourceBuffer[i].Length]; 
         Parallel.For(0, scanlineSize, y => 
         { 
          destbuffer[i][y] = (byte)(sourceBuffer[i][y] & maskBuffer[i % maskTiffHeight][y % (maskTiffWidth * tiffBpp/8)]); 
          destbuffer2[i][y] = (byte)(sourceBuffer[i][y] & ~maskBuffer[i % maskTiffHeight][y % (maskTiffWidth * tiffBpp/8)]); 
         }); 
        }); 

Danke für die Antwort Bernhard.

Dan

0

wahrscheinlich Pech für Sie: Bitmap-Manipulation Funktionalität von Windows bereitgestellt (und wahrscheinlich irgendwo im Hintergrund von dieser Bibliothek verwendet) nicht mit mehreren Threads nicht funktioniert.

Zur Verbesserung der Leistung sollten Sie (single-threaded) unmanaged Code verwenden.

+0

Wenn ich das TIFF-Bild in einem multiplen Bitmap-Objekt teile, kann ich das nicht tun? – Dan

+0

Können Sie mir ein Beispiel dafür zeigen? Ich benutze sehr großes Bild und maskiere das ich viele Male auf das Ende der Manipulation warten muss. – Dan