Perl convert image to base64 -
i using service send picture server , require image converted base64 format before sent. tried mime::base64 code:
use mime::base64 (); open (image, "c:\\wamp\\www\\image.png") or die "$!"; $base64_string = image; $encoded = encode_base64($base64_string); print "encode $encoded"; and got error message
undefined subroutine &mqin::encode_base64 called @ line 6.
when specify empty import list, this:
use mime::base64 (); you no imports.
change line to:
use mime::base64; the () parens specifying mime::base64 exports nothing namespace. default behavior (without parens) export encode_base64 , decode_base64. you're overriding convenient default. if don't want functions polluting main namespace retain original use mime::base64 () line, , fully-qualify subroutine call:
$encoded = mime::base64::encode_base64($base64_string); but it's whole lot easier, , satisfactory allow default export list processed removing parenthesis use line.
update you're not reading file. line:
$base64_string = image; ...should updated this:
$raw_string = do{ local $/ = undef; <image>; }; $encoded = encode_base64( $raw_string ); that problem have been caught more verbosely if had use strict 'subs' in effect. problem "image" bareword, , perl thinks it's subroutine call. angle brackets, "<>" common way of reading filehandle. "local $/ = undef" part means of ensuring slurp entire file, not until first sequence looks "\n" perl.
update2: , mob points out, either need escaping backslashes in path, or use forward slashes. perl doesn't mind, on win32. of course since you're taking wise step of using or die $! on open, you've discovered mistake.
Comments
Post a Comment