Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    PHP: Problema rotazione automatica immagini aiutoooo!!

    Ciao a tutti,
    Ho un grosso ed alquanto strano problema:

    Ho due foto:
    prima foto scattata con iPhone:
    su pc risoluzione width 960 height 1280.
    Quando passo l'immagine a php smartimage per ridimensionarla e uploadarla, la funzione getimagesize mi scambia i valori quindi width diventa 1280 ed height diventa 960 e la foto quindi si ruota diventando storta, ovviamente sul server viene caricata storta e visualizzata storta.

    La seconda immagine invece, empre scattata con iPhone resta dritta e il php non inverte nulla quindi si carica e si visualizza dritta.

    Terza foto, scattata non con iPhone ha: width 1328 height 747 e il php non scambia nulla, quindi caricata dritta e visualizzata dritta.

    Lo script che ho creato mi consente di far uploadare delle immagini agli utenti che visitano il sito, ma se loro mi caricano una foto ed il php mi inverte le risoluzioni quindi me le ruota, come faccio a capire se con smartimage devo farla ruotare o meno?
    Subito avevo pensato a questo:
    if($height<$width) ruota la foto e come larghezza usa l'altezza e come altezza usa la larghezza visto che il php me le inverte.
    Per la foto che si ruota tutto OK, ma il problema resta nella terza foto che, di origine sul pc e con il php la risoluzione resta uguale e corretta 1328x747 ma ovviamente essendoci quella condizione di cui sopra lui me la scambia perchè effettivamente altezza è minore di larghezza, ma nel caso di quella foto è giusto perchè è così, quindi non deve ruotarmela.
    Come faccio a capire quando ruotarle o no?
    Pensavo di utilizzare la funzione exif_read_data per prendermi il valore di orientation, ma la funzione mi da errore fatal.
    Aiutatemi vi prego perchè ci sto sbattendo la testa da settimane e tutte le prove sono invane.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Probabilmente quando hai scattato la prima foto, l'accelerometro del telefono non ha registrato correttamente la posizione in cui era, stava in verticale, ma ha registrato che fosse in orizzontale.
    Forse il telefono veniva da una posizione orizzontale e quando l'hai girato per fare la foto verticale non l'hai spostato abbastanza da far riconoscere il cambiamento di posizione all'accelerometro.

  3. #3
    Ciao e grazie per la tempestiva risposta.
    A questo non avevo effettivamente pensato, ma comunque credo che il problema resti ugualmente perchè:
    Anche se ciò che dici tu potrebbe starci. la risoluzione della foto dovrebbe comunque restare uguale sia su paint nelle proprietà della foto che nelle informazioni recuperate tramite il php, perchè se è come dici tu, la foto dritta è 960x1280 ma iphone me la registrata in verticale si, ma con 1280x960, quindi su paint dovrei vedere 1280x960 come con il php, invece su paint me la da giusta e il php no e me la ruota.
    Perchè?
    Il problema è che con questa foto ho a che fare con due risoluzioni, quando in realtà ne possiamo avere solo una, diverse solo se si tratta di stampa su carta, ma digitali solo una che io sappia ed il php su tutte le altre foto la recupera giusta come da pc.
    Voglio capire il problema per risolverlo in caso in cui un utente mi carica una foto con stesso problema, come faccio a saperlo io se devo ruotarla o meno? Ok questa la ruoto io perchè so il problema e va benissimo, ma come posso prevedere che un utente mi carichi la foto con stesso problema?

    Ciao e grazie attendo risposta.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Sei riuscito poi a leggere i dati Exif?

    Pensa a questa situazione:
    - fai la foto in verticale, ma viene registrata nell'Exif come orizzontale
    - PHP legge i dati Exif, sa che è orizzontale e la ruota secondo questo dato, quindi usa un'immagine 1280x960 per la manipolazione
    - Paint NON legge i dati Exif e ti mostra la foto così come gli arriva, 960x1280

    Hai provato ad aprire la foto con programmi un po' più seri di Paint? Tipo Gimp? Come te la mostra?

    Io continuerei sulla possibilità di un errore di registrazione della posizione.

  5. #5
    Ciao,
    Non sono riuscito ancora a leggere l'exif, mi da errore fatale, come sa lfunzione non esista.
    Si credo che sia proprio quello il problema, nell'exif ce la risoluzione della foto orizzontale quando in realtà la foto è verticale.
    Però in ogni caso non potrei comunque farci molto perchè quando si tratta di foto davvero orizzontali allora come lo riconosco? Mica posso dire agli utenti: Attenzione, pubblicare solo foto verticali... sarebbe brutto e poco funzionale come sistema dai.
    Ok lasciamo stare la risoluzione che mi da paint e teniamo quella del php.
    Le informazioni reali della foto allora sono quelle del php in exif? e se io scatto due foto, una in verticale ma con registrazione in orizzontale ed una la scatto veramente in orizzontale, come faccio a capire quale delle due non deve ruotare?
    Ho visto che su 4 foto scattate con iPhone 3 mi danno questo problema, mentre una no, stessa risoluzione in php che su paint.
    Possibile che iPhone me le scatta tutte sfalsate? Mh!!! non so dove ma non vorrei che il problema stia da un'altra parte.
    Non riesco a caricarvi la foto qui perchè anche questo sistema mi da errore e mi dice che il file è di una risoluzione diversa e non riesce a ridimensionare l'immagine per poterla caricare e mi da la risoluzione, anche lui scambiata come me la da il mio php.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Beh se più servizi ti danno noie con quelle immagini, io sarei ancora più convinto che il problema siano le foto, un difetto può sempre capitare, non è che Apple ne sia esente.

    Se fai una foto verticale con registrazione orizzontale e una davvero orizzontale, non hai modo di gestire la cosa, c'è un errore su una delle foto e PHP non ha gli occhi per guardare la foto e decidere come va realmente orientata, si fida dei dati registrati.

    Se quando provi ad usare le funzioni per leggere l'exif hai un errore fatale, può essere che la libreria non sia installata sul server.

  7. #7
    Ok ok, ci sta che la foto abbia dei problemi, ma 3 foto su 4 mi presentano lo stesso problema, allora è il mio iPhone che scatta alla cavalo le foto. Boh.
    devo restare con la speranza che nessuno carichi foto con questo problema, visto che non ho un metodo per prevederlo.

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Ma non puoi prevedere errori sul salvataggio delle immagini, per il motivo che ti ho spiegato prima, PHP non ha gli occhi, deve firarsi dei dati che ha a disposizione, se sono sbagliati non può farci niente.

    Trova il modo di leggere gli exif delle foto "sbagliate" e così puoi sapere se effettivamente c'è l'errore, oppure aprile con un editor serio invece che con Paint, finché parliamo senza avere controprove, per me il problema è quello.

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    e se fai un passaggio di anteprima nel quale mostri l'immagine come la vede il PHP (potenzialmente sbagliata) e consenti all'utente di ruotarla?

  10. #10
    iao a tutti e grazie come sempre per le risposte.
    Credo che a questo punto la cosa migliore è proprio quella di mostrare un'anteprima e mettere a disposizione due pulsanti per ruotarla...
    però è un casino perchè io permetto l'upload di più immagini e quindi qualora l'utente me ne carichi più di una ha due anteprime e deve ruotare magari solo una delle due...
    Insomma mi pare strano, ora anche mia suocera che ha Galaxy s6 prova a caricare le foto e gliele carica storte.
    Fate anche voi una prova, provate ad andare su www.theourdream.it e ad accedere alla sezione Photoalbum. Premete su Aggiungi foto e caricate le foto, provate a vedere come vi carica quelle scattate con cellulare.
    Io sono non vedente e le foto non le vedo, quindi dovete dirmi voi gentilmente se si vedono storte o dritte, a me fino ad ora me lo sta dicendo mia suocera, però provate anche voi a caricare foto e vediamo un po' che succede.

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.