Page 1 of 1

Unable to load base64 encoded JPEG2000 string in ImageMagick

Posted: 2018-12-08T08:03:24-07:00
by Indark
Hello All,
I have just been introduced to ImageMagick - so please pardon my ignorance on this library.

Im trying to load the below string using ImageMagick - However no joy. Any help would be very much appreciated. Here is my sample code.

Code: Select all

$imagedata ="AAAADGpQICANCocKAAAAFGZ0eXBqcDIgAAAAAGpwMiAAAAAtanAyaAAAABZpaGRyAAAAyAAAAKAAAwcHAAAAAAAPY29scgEAAAAAABAAAAGXanAyY/9P/1EALwAAAAAAoAAAAMgAAAAAAAAAAAAAAKAAAADIAAAAAAAAAAAAAwcBAQcBAQcBAf9SAAwAAAABAQUEBAAA/1wAI0JvGG7qbupuvGcAZwBm4l9MX0xfZEgDSANIRU/ST9JPYf9kACIAAUNyZWF0ZWQgYnk6IEpKMjAwMCB2ZXJzaW9uIDQuMf+QAAoAAAAAAQMAAf9SAAwAAAABAQUEBAAA/5PPoKgT/dHUscn3uMJWDWKb153z8hPvSInB8QsdvHSg4pzoLevV6cHhwCOWrDWed1zB8RKHyC4PEhigx/MYuIx4wci8q/CEo2kiHBrV8DhszG7ymZ/UH7atm39cdbppgIDD4VYfCrB00E+GI+Qf3v1IHzVdC6k/pMRXolANASf+TQYCTKERfZoHB65rCU23EcMzjiQo+2MAmLli7aos4tyAgMOrw6tBVpk5rPA9rz1HB6Wn+siLUizMFl3TKpn7s1pJGcCba3pGnanMUNO8OP+EwaMdppACpwb6vbqSpeUbgICAgICAgID/2Q==";

// Decode image from base64
$image=base64_decode($imagedata);

// Create Imagick object
$im = new Imagick();

// Convert image into Imagick
$im->readimageblob($image);

// Create thumbnail max of 200x82
$im->thumbnailImage(200,82,true);

// Add a subtle border
$color=new ImagickPixel();
$color->setColor("rgb(220,220,220)");
$im->borderImage($color,1,1);

// Output the image
$output = $im->getimageblob();
$outputtype = $im->getFormat();

header('Content-type: image/jpeg');

echo $output;
The error message is"The image cannot be displayed because it contains error" . The string that I have with me (base64encoded) is not something that I generated. It's a response that I get from an API call - So I'm assuming it to be valid jpeg2000 encoded string. I tried decoding it at convertstring.com/EncodeDecode/Base64Decode . I'm seeing plain text strings.. something like ... "Created by: JJ2000 version 4.1" .. So I'm guessing the string has some meta data that needs to be stripped off before it can work

Re: Unable to load base64 encoded JPEG2000 string in ImageMagick

Posted: 2018-12-10T18:42:30-07:00
by fmw42
This works for me in command line IM 6.9.10.15 Q16

# convert image to jp2000

Code: Select all

convert image.gif image.jp2
# convert image to base64 string and save in variable img64

Code: Select all

img64=$(convert image.jp2 inline:jp2:-)
echo $img64

Code: Select all

data:image/jp2;base64,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
# read base 64 string from variable into inline: format to convert to base 64 data to png image

Code: Select all

convert inline:$img64 image_b64.png
I do not know Imagick that well, but see

https://imagemagick.org/Usage/files/#inline
http://us3.php.net/manual/en/imagick.newpseudoimage.php
https://imagemagick.org/script/formats.php#pseudo <-- INLINE seems to be missing here but will be fixed within about a day