How to serialize vtkImageData to a binary buffer

I am using the following code to serialize a vtkImageData object to text. Since to result is all text and quite large I am looking for a way to serialize the vtkImageData object to binary, any thoughts?

pvtkImageData is an instance of vtkImageData*

vtkSmartPointer <vtkDataSetWriter> writer = vtkSmartPointer <vtkDataSetWriter> ::New();
writer->WriteToOutputStringOn();
writer->SetInputData(pvtkImageData);
writer->Update();

writer->GetOutputString()

pvtkImageData->GetScalarPointer();