convertBase64Image.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const base64ToJPEG = (base64String, fileName) => {
  2. // Remova a parte inicial "data:image/jpeg;base64,"
  3. const base64WithoutHeader = base64String.replace(
  4. /^data:image\/jpeg;base64,/,
  5. ""
  6. );
  7. // Converte a string base64 para um array de bytes
  8. const byteCharacters = atob(base64WithoutHeader);
  9. const byteNumbers = new Array(byteCharacters.length);
  10. for (let i = 0; i < byteCharacters.length; i++) {
  11. byteNumbers[i] = byteCharacters.charCodeAt(i);
  12. }
  13. const byteArray = new Uint8Array(byteNumbers);
  14. // Cria um objeto Blob contendo os dados da imagem
  15. const blob = new Blob([byteArray], { type: "image/png" });
  16. // Cria um link para download
  17. const link = document.createElement("a");
  18. link.href = URL.createObjectURL(blob);
  19. link.download = fileName || "image.png";
  20. // Adiciona o link ao documento, clica nele e remove-o
  21. document.body.appendChild(link);
  22. link.click();
  23. document.body.removeChild(link);
  24. };
  25. const base64ToPNG = (base64String, fileName) => {
  26. // Remova a parte inicial "data:image/jpeg;base64,"
  27. const base64WithoutHeader = base64String.replace(
  28. /^data:image\/png;base64,/,
  29. ""
  30. );
  31. // Converte a string base64 para um array de bytes
  32. const byteCharacters = atob(base64WithoutHeader);
  33. const byteNumbers = new Array(byteCharacters.length);
  34. for (let i = 0; i < byteCharacters.length; i++) {
  35. byteNumbers[i] = byteCharacters.charCodeAt(i);
  36. }
  37. const byteArray = new Uint8Array(byteNumbers);
  38. // Cria um objeto Blob contendo os dados da imagem
  39. const blob = new Blob([byteArray], { type: "image/png" });
  40. // Cria um link para download
  41. const link = document.createElement("a");
  42. link.href = URL.createObjectURL(blob);
  43. link.download = fileName || "image.png";
  44. // Adiciona o link ao documento, clica nele e remove-o
  45. document.body.appendChild(link);
  46. link.click();
  47. document.body.removeChild(link);
  48. }
  49. export { base64ToJPEG, base64ToPNG };