Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. pdf::Image::Image(PoDoFo::PdfObject *pObject) :
  2. width((const l_int32) pObject->GetDictionary().GetKeyAsLong(PoDoFo::PdfName::FromEscaped("Width"))),
  3. height((const l_int32) pObject->GetDictionary().GetKeyAsLong(PoDoFo::PdfName::FromEscaped("Height"))),
  4. bpp((const int8_t) pObject->GetDictionary().GetKeyAsLong(PoDoFo::PdfName::FromEscaped("BitsPerComponent"))) {
  5.  
  6. char *tmp;
  7. long len;
  8. dynamic_cast<PoDoFo::PdfMemStream *>(pObject->GetStream())->GetFilteredCopy(&tmp, &len);
  9.  
  10. Magick::Blob blob;
  11. blob.updateNoCopy(tmp, (size_t) len, Magick::Blob::MallocAllocator);
  12. Magick::Image im(blob, Magick::Geometry(width, height), 2, "gray");
  13.  
  14. std::string pnm_header = "P5\n" + std::to_string(width) + " " + std::to_string(height) + "\n255\n";
  15.  
  16. unsigned char *buffer = (unsigned char *) malloc(width * height + pnm_header.size());
  17.  
  18. memcpy(buffer, pnm_header.c_str(), pnm_header.size());
  19. im.write(0, 0, width, height, "I", MagickCore::StorageType::CharPixel, buffer + pnm_header.size());
  20.  
  21. pix_image = pixReadMemPnm(buffer, width * height + pnm_header.size());
  22. free(buffer);
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement