Convert DATASET Base64 to image in PHP - php

I'm using an API to get manufacturer logos and it's returning the logo as a binary DATASET. I need to convert this into an image using PHP, but I am having a hard time with it. I can input the DATASET into some easily found tools online and it will spit out the image, I just can't get PHP to do it for me. The API says:
Returns DATASET containing the binary representation of the Logo
The binary data from the API is as follows
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
What I've tried
I've tried using the imagepng and imagejpg functions after decoding it using base64_decode, but I'm just getting a tiny little white box.
Any help would be greatly appreciated.

This sucker looks like it's a gif.
You can deliver it to your browser like this, without converting it to anything.
<img src="data:image/gif;base64,/9j/4ye-yadda-yadda-yadda-KKKACiiigD/2Q==">
You can save it to a colt.gif or other file by base 64 decoding it and then writing that decoded data stream directly to the file. Don't use the php image* functions unless you want to convert it from gif to something else.

Related

Is it possible to translate an image into raw text and then reverse it?

I have a picture. For whatever reason, I need that picture to be sent to an environment that can only receive text and not images. Images and other files must be sent through their filter and I want to get around this. I calculated that there would be 480,000 independent hex values being manipulated but this is really the only option I have. Also, is it possible to compress and uncompress it for less pixels being sent? I will need to send the picture from a PHP web server [lets say, mysite.com/image.php] and receive it in Lua, and my only connection to the server is over a web request. No ftp, no even loading image files. Just setting 480,000 variables to the different id's
Oh, one more thing: it needs to not crash my server when I run it. ;)
Convert your image to base64 (Eg: Can pass to the variable).
Eg: I converted PNG image
Base 64 image will look like this.
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE9JREFUeNpiYMADGLEJKssrCACp+Uw4JPYD8QdGHBIP7j58EMgCFDAAcvqBOBGI64FYAMpmYIFqAilYD6Udgbo+IBvXAMT/gXg9sjUAAQYAG6IS47QjgzEAAAAASUVORK5CYII="
You can use it in image source to display.
Hope this helps!

HTML/PHP/ODBC/PGSQL Base64 Image not displayed completely

I'm currently experiencing a weird problem while I converted a web application to ODBC using PostgreSQL (coming from MySQL with PHP mysqli-connector).
I noticed that images that are stored as a bytea in PostgreSQL database and thrown into PHP's base64 function are not shown correctly. At some point it's cut off after a couple of lines. This cut off is with all bytea image data that is stored in our database, we have that for logos and signatures.
If you inspect the img tag with the browser's inspector you'll see (at least in Chrome) that there is a lot data of that image missing.
What I do is a SELECT * FROM table and then in a for-loop encode the image as base64:
$clients[$i]['logo'] = base64_encode($clients[$i]['image']);
$clients[$i]['image'] = this is the bytea in the database and
$clients[$i]['logo'] = this is the base64 String that I display in a Smarty template like this: data:image/png;base64,{$client.logo}
I hope you can help.
The solution is the length of data in the odbc.ini files. If the length is limited, base64 strings that are too long will be cut off. Just needed to increase the size.

Converting .pdf to .zpl

I need to convert .pdf -file to .zpl -label file for printing with zebra printers, but is this even possible?
The PDF comes in as a base64 encoded string, and somehow I need to output that as a .zpl -file.
I use PHP in my project, and I prefer the method in PHP, but basically any programming language is fine, as long as it gets the job done.
I was thinking about converting the PDF to image(which seems to be possible by quick googling), and then from image(PNG, JPG, etc.) to ZPL(which also seems to be ok by quick googling), but does anyone have any knowledge about this kind of operation or any insights before I start to do this? I'm on a tight schedule here, and I cannot afford any fruitless work.
Update 4.8.2016
I went the other way and created the ZPL from the scratch because it keeps our service faster than doing some conversions. So I don't have any more info on this than what the google already offers, if someone comes wondering about this same thing. PS. ZPL isn't that hard of a language. ;)
I had the some problem to solve: take a PDF file, convert it into ZPL code somehow and print it using a Zebra printer.
Thanks to stackoverflow and the ZPL Programming Guide, I learned about embedding bitmaps with the Graphic Field command (^GF).
Basically, you have to do these steps:
Render a PDF file as a bitmap
Make it monochrome
Convert the bitmap into ASCII hexadecimal (as defined by ZPL)
Compress the ASCII hexadecimal (otherwise our printers struggled with megabytes of bitmap data)
Put the data into this code template ^XA^GFA{some parameters and tons of bitmap data}^XZ
Our services were running on ASP.NET so I wrote a C# library to do just that. It wraps the native calls to Google's PDFium for rendering and returns a string with valid ZPL code for printing.
You could convert base64 encoded PDF files like that:
public static string GetZplCode(string pdfBase64, int page = 0, int dpi = 203)
{
return PDFtoZPL.Conversion.ConvertPdfPage(pdfBase64, page: page, dpi: dpi);
}
I hope this nuget package will prevent others from spending weeks in searching on how to make this ^GF command work.

createimagefromstring gives invalid chunk type

Did not find any solutions to my problem .. so here we go..
I have a SLIM webservice, which supports uploading a report containing one or more base64 encoded images.
All data i receive in my webservice functions are json encoded and therefore i decode everything before handling the data.
I tested my function using Advanced Rest Client, and everything worked well, meaning that the images were created successfully.
After integrating the webservice with my iPhone app i got a problem though. The function createimagefromstring returns: invalid chunk type. Even tried to generate new base64 encoded image data using a website for that purpose, and still gave me the same error. It seems that im only able to use the base64 encoded image data that use in Advanced Rest Client.
Additional info: The image i used with success is a very small image, and thus the base64 string is not big. Tried using another image (slightly biggeR) and that worked too. But bigger images doesnt seem to work.. could there be problems here ?
Desperate for help, as the integration between the iPhone app and the webservice must be done soon :)
Thanks in advance
Digging some more revealed that the imagecreatefromstring was not the source of failure.
Strange Base64 encode/decode problem
seems like the encoding removes the + characters and replaces them with space instead.
Solution to my problem so far is:
str_replace(' ','+',$image);
and then afterwards do the base64_decode.
Should anybody have a better solution, please let me know..

Problems loading bulk data in mysql using php

I have a script that gets the raw binary image data via url request. It then takes the data and puts it into mysql.
Pretty simple right? Well It's I'm inserting some 8,000 decent sized 600x400 jpegs and for some odd reason some of the images are getting cut off. Maybe the part of my script that iterates through each image it needs to get is going to fast?
When I do a straight request to the URL I can see all the raw image data, but on my end, the data is cut off some way down the line.
Any ides why?
Is something in the chain treating the binary data as a string, in particular a C style null-terminated string? That could cause it to get cut off at the first null byte ('\0').
Have you tried simply call your script that pulls the binary image, and dump it out. If you see the image correctly then its not pulling part, might be something to do with inserting.
Are you setting the headers correctly?
ie:
header('Content-Length: '.strlen($imagedata));
header('Content-Type: image/png');
...
A string datatype would definitely not be the optimum for storing images in a DB.
In fact I've seen several recommendations that the image should go in a folder somewhere in your filesystem and the DB contains only the address/file path.
This is a link to a page about inserting images.
It contains the suggestion about the filepath and that a blob datatype is better if the images must go in the database.
If it's a blob, then treating it as a string won't work.
If you make repeated requests to the same url, does the image eventually load?
If so that points to a networking issue. Large packet support is enabled in your kernal (assuming linux) which doesn't work correctly for a lot of windows clients. I've seen a similar issue with large(1+MB) javascript libraries served from a linux machine.
http://en.wikipedia.org/wiki/TCP_window_scale_option
http://support.microsoft.com/kb/314053

Categories