ImageText
VTKExamples/Cxx/Images/ImageText
Description¶
This example demonstrates how to draw text onto an image ({{class|vtkImageData}}). It uses {{class|vtkImageBlend}} to blend the text and the image. For another example using vtkImageBlend, see .
See also for an example of drawing text, also in 2D, but into the render window rather than into a vtkImageData object.
Code¶
ImageText.cxx
#include <vtkImageBlend.h> #include <vtkImageData.h> #include <vtkPointData.h> #include <vtkPNGWriter.h> #include <vtkSmartPointer.h> #include <vtkFreeTypeUtilities.h> #include <vtkTextProperty.h> #include <vtkImageCanvasSource2D.h> // must build VTK with VTK_USE_SYSTEM_FREETYPE=ON int main(int argc, char* argv[]) { // Create a black image with a red circle of radius 50 centered at (60, 60) vtkSmartPointer<vtkImageCanvasSource2D> drawing = vtkSmartPointer<vtkImageCanvasSource2D>::New(); drawing->SetScalarTypeToUnsignedChar(); // PNGWriter requires unsigned char (or unsigned short) drawing->SetNumberOfScalarComponents(3); drawing->SetExtent(0, 150, 0, 120, 0, 0); // xmin, xmax, ymin, ymax, zmin, zmax drawing->SetDrawColor(255, 0, 0); // red drawing->DrawCircle(60, 60, 50); // parameters: x, y, radius // Create an image of text vtkSmartPointer<vtkFreeTypeUtilities> freeType = vtkSmartPointer<vtkFreeTypeUtilities>::New(); vtkSmartPointer<vtkTextProperty> textProperty = vtkSmartPointer<vtkTextProperty>::New(); textProperty->SetColor(1.0, 1.0, 0.0); // yellow textProperty->SetFontSize(24); vtkSmartPointer<vtkImageData> textImage = vtkSmartPointer<vtkImageData>::New(); freeType->RenderString(textProperty, "Test String", textImage); // Combine the images vtkSmartPointer<vtkImageBlend> blend = vtkSmartPointer<vtkImageBlend>::New(); blend->AddInputConnection(drawing->GetOutputPort()); blend->AddInputData(textImage); blend->SetOpacity(0, 0.5); // background image: 50% opaque blend->SetOpacity(1, 1.0); // text: 100% opaque blend->Update(); vtkSmartPointer<vtkPNGWriter> writer = vtkSmartPointer<vtkPNGWriter>::New(); writer->SetFileName("output.png"); writer->SetInputConnection(blend->GetOutputPort()); writer->Write(); return EXIT_SUCCESS; }
CMakeLists.txt¶
cmake_minimum_required(VERSION 2.8) PROJECT(ImageText) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) add_executable(ImageText MACOSX_BUNDLE ImageText.cxx) target_link_libraries(ImageText ${VTK_LIBRARIES})
Download and Build ImageText¶
Click here to download ImageText and its CMakeLists.txt file. Once the tarball ImageText.tar has been downloaded and extracted,
cd ImageText/build
If VTK is installed:
cmake ..
If VTK is not installed but compiled on your system, you will need to specify the path to your VTK build:
cmake -DVTK_DIR:PATH=/home/me/vtk_build ..
Build the project:
make
and run it:
./ImageText
WINDOWS USERS PLEASE NOTE: Be sure to add the VTK bin directory to your path. This will resolve the VTK dll's at run time.