Completed

Base64 para jpg

Published on the November 18, 2017 in IT & Programming

About this project

Open

Eu tenho servidor em PHP puro, nao e um site, tem uma pagna que eu comunico com ela trazer de json, envio uma string base64 para ela e a extenção da imagem, minha pagna recebe como $_POST e remonta a imagem para mim fisicamente no servidor. Eu vi na internet alguns projetos muitos bom, mas nao quanto pego a imagem ja montada pela base64, e redimenciono ela, que e o que eu preciso mesmo e redimencionar para um tamanho menor, da erro. Meus testes indicaram que a imagem remontada da base64 nao e compativel com os comandos de redimencionar que achei na internet.

Resumindo, eu preciso receber a base64, montar a imagem fisica, e depois redimencionar ela por 150 - 150. Para que fique pequena pra depois eu consumir ela.
A parte de receber e remontar a imagem ja esta pronta, fiz uma gambiara que deu certo mas nao quero que fique assim. Ficou assim, eu recebo base64, monto a imagem em um diretorio, uso WideImage para redimencionar ela, excluo a imagem antiga, pego o outro codigo que uso pra redimencionar que e muito bom e chamo de novo e redimenciono novamente, ai da super certo, mas esta com gambiara..

//Tamanho da Imagem
$altura_imagem  = "150";
$largura_imagem = "150";

//Pasta onde Salvar
$SalvarPastaRaiz = 'imagens/';
$SalvarPasta150  = 'imagens/imagem150/';

  //Pega os parametros enviados como POST
  $encoded_string = $_POST['imagem_postagem'];
  $image_name = md5(time()) . $_POST['extesao'];
 
  //Inicia o Processo de Converter em Base64 para Imagem
  $decoded_string = base64_decode($encoded_string);
  $path = $image_name;
  $file = fopen($path, 'wb');           
  $is_written = fwrite($file, $decoded_string);
  fclose($file);
 
  $image_tempo = WideImage::load($path);
  $redimencionar = $image_tempo->resize(500,500);
  //Deletar imagem na pasta Raiz
  unlink($path);     
  $redimencionar->saveToFile($image_name);
 
  ////////////////////////////////////////////////////////////////////////////////////////////////////
  //Imagem 1 /////////////////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////

  header("Content-type: image/jpg");       
 
  //Iniciar a processo de Redimencionar a Imagem
  $imagem_temporaria = imagecreatefromjpeg($image_name);
 
  $largura_original = imagesx($imagem_temporaria);
  $altura_original = imagesy($imagem_temporaria);
 
  $nova_largura = $largura_imagem ? $largura_imagem : floor (($largura_original / $altura_original) * $altura_imagem);
  $nova_altura = $altura_imagem ? $altura_imagem : floor (($altura_original / $largura_original) * $largura_imagem);
  $imagem_redimensionada = imagecreatetruecolor($nova_largura, $nova_altura);
  imagecopyresampled($imagem_redimensionada, $imagem_temporaria, 0, 0, 0, 0, $nova_largura, $nova_altura, $largura_original, $altura_original);
 
  //Salvar a Imagem Redimencionada na Pasta
  imagejpeg($imagem_redimensionada, $SalvarPasta150.$Image_name);
 
  //Deletar imagem na pasta Raiz
  unlink($image_name); 

Esse e como esta hoje. Eu nao deixei o metodo do WideImage  porque ele nao deixa a imagem do tamanho que preciso, pois depois de redimanecionar fica muito grande ainda, preciso do tamanho dela no minimo uns 12kb mais que isso fica pesado o transporte da imagem.

Category IT & Programming
Subcategory Other
Project size Small
Is this a project or a position? Project
I currently have I have an idea
Required availability As needed
Experience in this type of projects No (I haven’t managed this kind of project before)

Delivery term: November 21, 2017

Skills needed

PHP