Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    class.upload problema quasi divertente

    si, quasi perchè è 2 giorni che mi fa ammattire, penso che tanti di voi usino questa classe, tra l'altro molto bella e completa oltre che facile.

    Vi espongo il problema:

    provato sia su win che su host linux
    php 5 su entrambi i server e gd aggiornate

    il problema è che ho 2 foto scaricate dal mio cellulare una verticale (1920x2560) e una orizzontale (2560x1920) da 1.5 megabyte l'una.

    Il problema è che quelle verticali me le carica tranquillamente facendo resize, rinomine ecc, quelle orizzontali non le processa, se le faccio solo caricare lo fa tranquillamente ma se imposto resize, rinomina non processa e dice: "error to create a jpeg image from source". Le foto sono state fatte e caricate su pc lo stesso giorno con lo stesso apparecchio fotografico.

    Questo problema me lo fa solo con foto orizzontali che superano i 2000px di larghezza fatte dai cellulari (non solo il mio). Con foto scaricate da macchinette fotografiche non da problemi.

    Piccolo particolare è che se prendo queste foto problematiche con photoshop e le salvo di nuovo senza apportare modifiche le processa tranquillamente.

    Ora se lo script servisse solo a me non ci sarebbero problemi, nel senso che modificherei le img, ma lo script è per un sito dove gli iscritti potranno caricare loro foto e per ovvi motivi non posso offrire il servizio con una tale limitazione.

    Scusate se mi sono dilungato. Aspetto con ansia anche il più banale suggerimento.

    FFMM

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    boh....banalmente prova a verificare se i file prima del salvataggio di photoshop e dopo sono identici (qualcosa tipo: http://www.megalab.it/3670/due-progr...ash-di-un-file) almeno capisci se magari è un problema di lettura del file che non è venuto copiato bene....non ho idea da dove partire...considera che se fosse un problema di algoritmo, non dovrebbe funzionare nemmeno con il file salvato da photoshop

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    sicuramente photoshop apporta della modifiche sulla qualità delle immagini subito dopo il salvataggio. Presumendo che tu abbia mantenuto il formato (magari .jpg) mi viene da sospettare all'applicazione del metodo rgb 8 bit (da parte di photoshop)

    anche se si dovessero trovare le differenze tra le due orizzontali non mi viene da pensare a nulla riguardo alla diff tra verticale e orizzontale
    diamo un'occhiata la codice?

  4. #4
    Cercando su google ho trovato una discussione che parlava di questo errore con la classe in oggetto: pare si verifichi nel caso in cui il file jpeg non sia proprio "standard".

  5. #5
    quello delle jpg non standard l'ho visto pure io, ma se non fossero standard non mi caricherebbe manco quelle verticali, il codice è:

    Codice PHP:
    include("core/class.upload/class.upload.php");

            
    $foo = new Upload($_FILES['img']);
            if (
    $foo->uploaded) {
            if(
    $foo->image_src_x>180 || $foo->image_y 250){
                
    $foo->image_resize true;
                if(
    $foo->image_src_x>180 && $foo->image_src_x>=$foo->image_src_y){$foo->image_x 180;$foo->image_ratio_y true;}
                else{
    $foo->image_y 250;$foo->image_ratio_x true;}
            }
            
    $foo->file_safe_name true;
            
    $foo->file_force_extension true;
            
    $foo->file_overwrite true;
            
    $foo->file_max_size '4194304'// 4MB
            
    $foo->allowed = array('image/*');
            
    $foo->file_new_name_body "$idutente";
            
    $foo->image_convert jpeg;
            
    $foo->Process("images/foto/$idutente/profilo/");
            
        if(
    $foo->processed){
        
            
    $foo1 = new Upload($_FILES['img']);
            if(
    $foo1->image_src_x>60 || $foo1->image_y 60){
                
    $foo1->image_resize true;
                if(
    $foo1->image_src_x>60 && $foo1->image_src_x>=$foo1->image_src_y){$foo1->image_x 60;$foo1->image_ratio_y true;}
                else{
    $foo1->image_y 60;$foo1->image_ratio_x true;}
            }
            
    $foo1->file_safe_name true;
            
    $foo1->file_force_extension true;
            
    $foo1->file_overwrite true;
            
    $foo1->file_max_size '4194304'// 4MB
            
    $foo1->allowed = array('image/*');
            
    $foo1->file_new_name_body "$idutente";
            
    $foo1->image_convert jpeg;
            
    $foo1->Process("images/foto/$idutente/profilo/thumb/");
            
            
    mysql_query("UPDATE users SET photo='$idutente.jpeg' WHERE uid='$idutente'");
            
            echo
    "<script type='text/javascript'>
                window.location='pr.php?sec=edimg';
            </script>"
    ;
        }
        else{
            echo
    "<script type='text/javascript'>
                alert('Non è stato possibile caricare l\'immagine, causa: "
    .$foo->error."');
                window.location='pr.php?sec=edimg';
            </script>"
    ;    
        }
        }
        else{
            echo
    "<script type='text/javascript'>
                alert('Non è stato possibile caricare l\'immagine, causa: "
    .$foo->error."');
                window.location='pr.php?sec=edimg';
            </script>"
    ;    
        } 
    praticamente funziona se tolgo

    Codice PHP:
    if($foo->image_src_x>180 || $foo->image_y 250){
                
    $foo->image_resize true;
                if(
    $foo->image_src_x>180 && $foo->image_src_x>=$foo->image_src_y){$foo->image_x 180;$foo->image_ratio_y true;}
                else{
    $foo->image_y 250;$foo->image_ratio_x true;}
            }
            
    $foo->file_safe_name true;
            
    $foo->file_force_extension true;
            
    $foo->file_overwrite true;
            
    $foo->file_max_size '4194304'// 4MB
            
    $foo->allowed = array('image/*');
            
    $foo->file_new_name_body "$idutente";
            
    $foo->image_convert jpeg
    in poche parole non mi fa editare questo tipo di immagini orizzontali

  6. #6
    ma l'errore che dice?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    "error creating a jpeg image from source", conoscete qualche buona classe per l'editing di immagini su server? Non vorrei usarlo per non caricare troppo il server con immagini da 3000 px per poi modificarle, ma non vedo altre soluzioni visto che tutti oggi caricano img da cel e limitare questa scelta vorrebbe dire perdere parecchi utenti..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.