iGalerie

Vous n'êtes pas identifié(e).

Annonce

Un message d'erreur qui s'affiche ? Un mot de passe oublié ? L'ajout de fichier qui ne marche pas ?
Pensez d'abord à lire la FAQ, vous y trouverez probablement une solution à votre problème.

#1 Propositions » Format HEIC » 01-07-2024 14:28:12

dams75
Réponses : 1

Hello,

nous avons de temps en temps des fichier iphone au format HEIC, je propose que ce format soit pris en charge, le seul pré-requis, sera d'avoir imagick
Pour faciliter l'integration, voici une classe fait rapidement pour transformer le HEIC en JPG

class TImageHEIC {
    public static function convert(string $input, string $output): bool {
        if (!file_exists($input)) {
            throw new Exception("Input file does not exist.");
        }

        // Check if Imagick extension is loaded
        if (!extension_loaded('imagick')) {
            throw new Exception("Imagick extension is not loaded.");
        }

        try {
            $imagick = new Imagick();
            $imagick->readImage($input);
            $imagick->setImageFormat('jpeg');
            $imagick->writeImage($output);
            $imagick->clear();
            $imagick->destroy();
            return true;
        } catch (Exception $e) {
            throw new Exception("Error converting HEIC to JPG: " . $e->getMessage());
        }
    }
}

l'idée serait de l'integrer au niveau de l'upload et de convertir à la volée en jpg, la fonction pourrait etre également implémentée lors d'un scan.
Je n'ai pas pris le temps de regarder où mettre cela dans le code source.

#2 Re : Bugs » Bug lors de la selection des fichiers » 01-07-2024 14:23:39

Top, merci David

Pour savoir, tu vas prendre en compte également la version avec promesse ?

#3 Re : Bugs » Bug lors de la selection des fichiers » 28-06-2024 22:35:12

sinon il y a la gestion d'exception avec try ... catch, c'est une autre piste

#4 Re : Bugs » Bug lors de la selection des fichiers » 28-06-2024 22:32:41

Merci David pour ta réponse,

je comprends l'idée du Timeout, mais j'ai peur que ce soit trop aléatoire, si l'ordi lag un peu et n'a pas fini le traitement, ca retourne faux (sans doute c'est ce qui ce passe pour moi)

pourquoi pas utiliser l'event onerror de l'objet Image ?

img.onerror = function() {
                console.log('onerror, Invalid image');
addToList(files, i, 'filetype');
            };

ce qui donnerait

// Dimensions de l'image.
		if (file.type.match(/^image/))
		{

			function readFile(file) {
				return new Promise((resolve, reject) => {
					var f = new FileReader();
					f.onload = function() {
						resolve(f.result);
					};
					f.onerror = function() {
						reject(f.error);
					};
					f.readAsDataURL(file);
				});
			}

			var img = new Image();
			readFile(file).then(result => {
				if (img !== null) {
					img.onload = function() {
						addToList(files, i, (img.width > This.options.maxWidth || img.height > This.options.maxHeight) ? 'imagesize' : false);
					};
                                        img.onerror = function() {
                                           console.log('onerror, Invalid image');
                                           addToList(files, i, 'filetype');
                                        };
					img.src = result;
				}
			}).catch(error => {
				console.error('File reading error', error);
				addToList(files, i, 'filetype');
			});

		}
		else
		{
			addToList(files, i, false);
		}

Je ne sais pas si cette solution est viable, je testerais demain

#5 Re : Bugs » Bug lors de la selection des fichiers » 28-06-2024 12:10:55

Voici une proposition de fix

// Dimensions de l'image.
		if (file.type.match(/^image/))
		{

			function readFile(file) {
				return new Promise((resolve, reject) => {
					var f = new FileReader();
					f.onload = function() {
						resolve(f.result);
					};
					f.onerror = function() {
						reject(f.error);
					};
					f.readAsDataURL(file);
				});
			}

			var img = new Image();
			readFile(file).then(result => {
				if (img !== null) {
					img.onload = function() {
						addToList(files, i, (img.width > This.options.maxWidth || img.height > This.options.maxHeight) ? 'imagesize' : false);
					};
					img.src = result;
				}
			}).catch(error => {
				console.error('File reading error', error);
				addToList(files, i, 'filetype');
			});

		}
		else
		{
			addToList(files, i, false);
		}

#6 Bugs » Bug lors de la selection des fichiers » 28-06-2024 12:04:15

dams75
Réponses : 7

Hello,
Nous avons un soucis lors de la sélection d'images pour upload, en effet, cela retourne
Type de fichier non valide.

Evidemment le fichier a été vérifié et n'a aucun soucis.
Si je le dépose une 2eme fois, cette fois ca passe, voici la capture
Capture-d-e-cran-2024-06-28-a-11-56-26.png

En allant dans le code source /js/upload.js
l'erreur se déclenche à cette fonction checkFile(files, i)
et c'est plus précisement ceci:
var e = setTimeout(function() { img = null; addToList(files, i, 'filetype'); }, 1000);

le readfile n'a pas fini que le timeout se déclenche, je suggere d'utiliser une promesse pour gerer readfile

Bon courage

Pied de page des forums

Propulsé par FluxBB