10
votes

Comment puis-je supprimer les données: pièce d'image à partir d'une chaîne de base64 de n'importe quel type d'image en PHP

Je fais actuellement ce qui suit pour décoder la base64 images en PHP: xxx

Comme vous pouvez le voir ci-dessus, nous acceptons les quatre types d'image la plus standard (JPEG, PNG, GIF, BMP) ;

Cependant, certaines de ces images sont très volumineuses et balayant chaque 4 à 5 fois avec Str_Replace semble un déchet terrible et terriblement inefficace.

est là une façon de pouvoir être de manière fiable Strip the Data: Image Partie d'une chaîne d'image de base64 en une seule passe? Peut-être en détectant la première virgule dans la chaîne?

Mes excuses Si c'est un problème simple, PHP n'est pas mon fort. Merci d'avance.


0 commentaires

5 Réponses :


30
votes

Vous pouvez utiliser une expression régulière:

$img = preg_replace('#^data:image/[^;]+;base64,#', '', $s['image']);


1 commentaires

Parfait! Bien que toutes les réponses soient bonnes et fonctionnent parfaitement. Il semble que votre méthode soit la plus rapide, donc je vous accorderai avec la réponse dès que je suis capable. Merci beaucoup. :)



0
votes

Vous devriez le tester mais je pense que cette solution devrait être légèrement plus rapide que celle de Mihai Iorga

$offset = str_pos($s['image'], ',');
$data = base64_decode(substr($s['image'], $offset));


0 commentaires

20
votes

fonction file_get_contents code> Supprimer l'en-tête et utilisez base64_decode code> fonction, Donc, vous obtenez une image de contenu claire.

Essayez ce code: P>

$img = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0gA...';
$imageContent = file_get_contents($img);


5 commentaires

Cela devrait être la réponse acceptée. Solution très intelligente!


Cela devrait certainement être la réponse acceptée, une solution beaucoup plus élégante


Je suis un peu en retard à la fête, mais c'est de loin la meilleure réponse.


S'il vous plaît essayez ceci, c'est plus simple en avant!


N'est-ce pas l'ouverture des menaces de sécurité?



0
votes

Je génère une image avec JavaScript / Kendo et envoyez ceci par AJAX au serveur.

$contentType  = mime_content_type($s['image']);
$img = preg_replace('#^data:image/(.*?);base64,#i', '$2', $s['image']);


3 commentaires

Pouvez-vous ajouter un peu d'explication sur la raison pour laquelle cela fonctionne mieux '


Je génère une image avec JavaScript / Kendo et envoyez ceci par AJAX au serveur. Preg_replace ('# ^ Données: image / [^;] +; base64, #' ',' ', $ S [' image ']); Cela ne fonctionne pas dans ce cas.


Parfait, veuillez ajouter ça à votre réponse :)



0
votes

Vous pouvez expression régulière pour supprimer l'image ou le format de données PDF.

data.replace(/^data:application\/[a-z]+;base64,/, "")


0 commentaires