From 72e21fa0807255f3e4c65d718ebf7f097477a5eb Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Wed, 30 Jul 2008 12:47:37 +0000 Subject: [PATCH] Make the python bindings for image views actually only return data from the view and not the whole image. --- bindings/python/mapnik_image_view.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/bindings/python/mapnik_image_view.cpp b/bindings/python/mapnik_image_view.cpp index 53ab523d7..661eccfd4 100644 --- a/bindings/python/mapnik_image_view.cpp +++ b/bindings/python/mapnik_image_view.cpp @@ -40,17 +40,22 @@ using mapnik::save_to_file; // output 'raw' pixels PyObject* view_tostring1(image_view const& view) { - int size = view.width() * view.height() * 4; - return ::PyString_FromStringAndSize((const char*)view.data().getBytes(),size); + std::ostringstream ss(std::ios::out|std::ios::binary); + for (unsigned i=0;i(view.getRow(i)), + view.width() * sizeof(image_view::pixel_type)); + } + return ::PyString_FromStringAndSize((const char*)ss.str().c_str(),ss.str().size()); } // encode (png,jpeg) PyObject* view_tostring2(image_view const & view, std::string const& format) { std::ostringstream ss(std::ios::out|std::ios::binary); - if (format == "png") save_as_png(ss,view.data()); - else if (format == "png256") save_as_png256(ss,view.data()); - else if (format == "jpeg") save_as_jpeg(ss,85,view.data()); + if (format == "png") save_as_png(ss,view); + else if (format == "png256") save_as_png256(ss,view); + else if (format == "jpeg") save_as_jpeg(ss,85,view); else throw mapnik::ImageWriterException("unknown format: " + format); return ::PyString_FromStringAndSize((const char*)ss.str().c_str(),ss.str().size()); }