[vtkusers] Fast conversion from vtkImageData to QImage?
    Prashanth Udupa 
    prashanth.udupa at gmail.com
       
    Fri Jan 29 06:09:57 EST 2010
    
    
  
Hi All,
I have an application where I need to convert vtkImageData to QImage. I am
using the following code for this.
Assumptions: vtkImageData is 2D. dim[0] is width, dim[1] is height. Scalars
associated with the image is always VTK_UNSIGNED_CHAR type.
QImage ConvertToQImage(vtkImageData* imageData)
{
    int dim[3];
    imageData->GetDimensions(dim);
    if(dim[0]*dim[1]*dim[2] == 0)
        return QImage();
    vtkUnsignedCharArray* scalars
        =
vtkUnsignedCharArray::SafeDownCast(imageData->GetPointData()->GetScalars());
    if(!scalars)
        return QImage();
    QImage qImage(dim[0], dim[1], QImage::Format_ARGB32);
    vtkIdType tupleIndex=0;
    unsigned char tuple[] = {0, 0, 0, 0};
    for(int j=0; j<dim[1]; j++)
    {
        for(int i=0; i<dim[0]; i++)
        {
            int r=0, g=0, b=0, a=0;
            scalars->GetTupleValue(tupleIndex++, tuple);
            switch(scalars->GetNumberOfComponents())
            {
            case 1:
                r = g = b = tuple[0];
                a = 255;
                break;
            case 2:
                r = g = b = tuple[0];
                a = tuple[1];
                break;
            case 3:
                r = tuple[0];
                g = tuple[1];
                b = tuple[2];
                a = 255;
                break;
            case 4:
                r = tuple[0];
                g = tuple[1];
                b = tuple[2];
                a = tuple[3];
                break;
            }
            QRgb color = qRgba(r, g, b, a);
            qImage.setPixel(i, j, color);
        }
    }
    return qImage;
}
I was wondering if there was a faster way to do this. If anyone has hints
for me, please do share.
Thanks very much.
Regards,
Prashanth N Udupa
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100129/8ac94bbf/attachment.htm>
    
    
More information about the vtkusers
mailing list