level 6
7号撞针
楼主
是这样的,我需要把VTK窗口渲染出来的图像发送到Web。已经验证了这条路是可行的:
vtkWindowToImageFilter windowToImageFilter = vtkWindowToImageFilter::New();
windowToImageFilter->SetInput(renWin);
windowToImageFilter->Modified();
windowToImageFilter->Update();
vtkPNGWriter pngWriter = vtkPNGWriter::New();
pngWriter->SetFileName("screenshot2.png");
pngWriter->SetInputConnection(windowToImageFilter->GetOutputPort());
pngWriter->Write();
这两步就能把VTK窗口的图像抠下来并保存成 .png图像了。
接下来对于Qt:
QString filename = QString("screenshot2.png");
QImageReader *imgReader;
imgReader->setFileName(filename);
QImage *image;
*image = imgReader->read();
QByteArray byteArray;
QBuffer buffer(&byteArray);
image->save(&buffer,"PNG");
QByteArray hexed = byteArray.toBase64();
这样就得到了base64加密的QByteArray hexed,hexed可以发送到Web并基于HTML5直接显示
这样确实可以达到效果,但是中间经过了把VTK窗口图像保存成 .png格式,再读取 .png图像为ByteArray的过程,显得超级蠢。
我是这样想的,既然能保存成.png,那在这一步之前肯定已经有二进制的数据存在(十有八九是vtkUnsignedCharArray),那我直接把这个数据转化成QByteArray不就省了一大步吗?这中间肯定是能转化,但我想知道VTK或者QT有没有提供这样的接口?
问题可能比较冷门,遇到过这个问题或者有任何建议的同学请不吝赐教,感激不尽。
2016年01月12日 04点01分
1
vtkWindowToImageFilter windowToImageFilter = vtkWindowToImageFilter::New();
windowToImageFilter->SetInput(renWin);
windowToImageFilter->Modified();
windowToImageFilter->Update();
vtkPNGWriter pngWriter = vtkPNGWriter::New();
pngWriter->SetFileName("screenshot2.png");
pngWriter->SetInputConnection(windowToImageFilter->GetOutputPort());
pngWriter->Write();
这两步就能把VTK窗口的图像抠下来并保存成 .png图像了。
接下来对于Qt:
QString filename = QString("screenshot2.png");
QImageReader *imgReader;
imgReader->setFileName(filename);
QImage *image;
*image = imgReader->read();
QByteArray byteArray;
QBuffer buffer(&byteArray);
image->save(&buffer,"PNG");
QByteArray hexed = byteArray.toBase64();
这样就得到了base64加密的QByteArray hexed,hexed可以发送到Web并基于HTML5直接显示
这样确实可以达到效果,但是中间经过了把VTK窗口图像保存成 .png格式,再读取 .png图像为ByteArray的过程,显得超级蠢。
我是这样想的,既然能保存成.png,那在这一步之前肯定已经有二进制的数据存在(十有八九是vtkUnsignedCharArray),那我直接把这个数据转化成QByteArray不就省了一大步吗?这中间肯定是能转化,但我想知道VTK或者QT有没有提供这样的接口?
问题可能比较冷门,遇到过这个问题或者有任何建议的同学请不吝赐教,感激不尽。