Tengo una imagen a la que aplico filtros con un plugin de jQuery llamado Vintage.js
El caso es que lo que quiero es a través de AJAX crear una nueva imagen con una string en Base64 que es la imagen editada.
Paso a través de AJAX la string a un script PHP donde la decodifico y con file_put_contents creo una imagen nueva.
El problema es que en local va genial pero a la hora de subirlo al servidor remoto el script php me crea la imagen pero con 0 bytes y no se me abre.
Esta es la llamada AJAX (con jQuery):
Código Javascript :
$.ajax({ url : 'decode.php', data : {'imagen':encodeURIComponent(imagen),'file':'airsoft'}, type : 'post', error : function(a,b,c) { alert(c); }, success : function (data) { console.log('Data = '+data); subeImagen(data,'airsoft'); } })
Este es el script:
Código PHP :
<?php header("Content-type:image/jpeg"); $imagen = urldecode($_POST["imagen"]); $file = $_POST["file" ]; $arrayImg = explode(",",$imagen); $base64string = $arrayImg[sizeof($arrayImg)-1]; $newImagen = base64_decode($imagen); $abrir = fopen($file.".jpg","w"); fputs( $abrir , base64_decode($base64string)); fclose($abrir); //file_put_contents($file.".jpg", base64_decode($base64string)); echo $file.".jpg"; die(); exit(); ;?>
¿Alguien me puede quitar el dolor de cabeza diciéndome por qué sucede esto y como solucionarlo?
Es para un cliente y debo entregarlo ya. Muchas Gracias.