// [[Rcpp::export]] XPtrImage magick_image_readbin(Rcpp::RawVector x, Rcpp::CharacterVector density, Rcpp::IntegerVector depth, bool strip = false){ XPtrImage image = create(); #if MagickLibVersion >= 0x689 Magick::ReadOptions opts = Magick::ReadOptions(); #if MagickLibVersion >= 0x690 opts.quiet(1); #endif if(density.size()) opts.density(std::string(density.at(0)).c_str()); if(depth.size()) opts.depth(depth.at(0)); Magick::readImages(image.get(), Magick::Blob(x.begin(), x.length()), opts); #else Magick::readImages(image.get(), Magick::Blob(x.begin(), x.length())); #endif if(strip) for_each (image->begin(), image->end(), Magick::stripImage()); return image; }
// [[Rcpp::export]] XPtrImage magick_image_read_list(Rcpp::List list){ XPtrImage image = create(); for(int i = 0; i < list.size(); i++) { if(TYPEOF(list[i]) != RAWSXP) throw std::runtime_error("magick_image_read_list can only read raw vectors"); Rcpp::RawVector x = list[i]; Magick::readImages(image.get(), Magick::Blob(x.begin(), x.length())); } return image; }
// redis set -- serializes to R internal format std::string set(std::string key, SEXP s) { // if raw, use as is else serialize to raw Rcpp::RawVector x = (TYPEOF(s) == RAWSXP) ? s : serializeToRaw(s); // uses binary protocol, see hiredis doc at github redisReply *reply = static_cast<redisReply*>(redisCommand(prc_, "SET %s %b", key.c_str(), x.begin(), x.size())); std::string res(reply->str); freeReplyObject(reply); return(res); }
// [[Rcpp::export]] XPtrImage magick_image_readbitmap_raw(Rcpp::RawVector x){ Rcpp::IntegerVector dims(x.attr("dim")); return magick_image_bitmap(x.begin(), Magick::CharPixel, dims[0], dims[1], dims[2]); }
// [[Rcpp::export]] std::string base64encode(const Rcpp::RawVector& x) { return b64encode(x.begin(), x.end()); }