コード例 #1
0
        public static vtkImageData FromImage(Image img, int numberOfScalarComponents)
        {
            Bitmap       bitmap       = new Bitmap(img);
            vtkImageData vtkImageData = vtkImageData.New();

            vtkImageData.SetScalarTypeToUnsignedChar();
            vtkImageData.SetNumberOfScalarComponents(numberOfScalarComponents);
            vtkImageData.SetDimensions(img.Width, img.Height, 1);
            vtkImageData.AllocateScalars();
            byte[] array = new byte[img.Width * img.Height * vtkImageData.GetNumberOfScalarComponents()];
            int    num   = 0;

            for (int i = img.Height - 1; i >= 0; i--)
            {
                for (int j = 0; j < img.Width; j++)
                {
                    array[num++] = bitmap.GetPixel(j, i).R;
                    array[num++] = bitmap.GetPixel(j, i).G;
                    array[num++] = bitmap.GetPixel(j, i).B;
                    if (numberOfScalarComponents > 3)
                    {
                        array[num++] = bitmap.GetPixel(j, i).A;
                    }
                }
            }
            Marshal.Copy(array, 0, vtkImageData.GetScalarPointer(), array.Length);
            return(vtkImageData);
        }