[PHP] Convertire lunghezza di focale

Discussione in 'PHP' iniziata da Shyson, 6 Ottobre 2019.

  1. Shyson

    Shyson Utente Attivo

    Registrato:
    19 Agosto 2012
    Messaggi:
    1.119
    Mi Piace Ricevuti:
    1
    Punteggio:
    38
    Sesso:
    Maschio
    Ho questo codice in WordPress, lo devo modificare in modo che mi dia automaticamente la conversione, devo fare in modo che la lunghezza di focale di un obiettivo fotografico venga convertita come fosse quella di un sensore full frame (35 mm).

    Mi spiego meglio: prendiamo una Canon 70D che ha un fattore di conversione di 1.6x, quindi se io faccio una foto con questa macchina mi da una lunghezza di focale a 97mm che convertita nel formato 35mm sarebbe 155,2 mm

    Codice:
    function change_focal_length($content) {
        if (isset($content['focal_length']))
            $content['focal_length'] = '35mm';
    
        return $content;
    }
    add_filter('exifography_display_exif','change_focal_length');  
    Questi sono tutti i fattori di conversione, nel tuo esempio ne puoi usare qualcuno, poi il resto li inserisco io.

    In pratica al posto di quel "35mm" va messo un codice che quando estrapola i dati EXIF dalla fotocamera ne effettua la conversione in base al sensore che monta.

    Questo è il plugin: https://wordpress.org/plugins/thesography/

    Codice:
    FATTORI DI CONVERSIONE
    Largo formato
    4x5”= 0.27x
    5x7”= 0.20x
    8x10”= 0.13x
    11x14”= 0.10x
    
    Medio formato
    645D = 0.79x
    645 = 0.62x
    6x6 = 0.55x
    6x7 = 0.47x
    6x9 = 0.43x
    6x12 = 0.35x
    
    DSLRs / mirrorless
    Full frame 35mm = 1x
    APS-H  (Canon) = 1.26x
    DX (Nikon) = 1.52x
    APS-C  general (Nikon-Sony-Pentax) = 1.52x
    APS-C  (Canon) = 1.62x
    APS-C  (Sigma) = 1.7x
    4/3” = 2x
    CX (Nikon) = 2.7x
    
    Camere compatte
    1.5” = 1.85x
    1” = 2.71x
    2/3” = 3.93x
    1/1.6” = 4.41x
    1/1.7” = 4.55x
    1/1.8” = 4.8x
    1/2 = 5.41x
    1/2.3” = 5.58x
    1/2.4” = 5.74x
    1/2.5” = 5.97x
    1/2.7” = 6.41x
    1/3” = 7.21x
    1/3.2” = 7.62x
    1/3.6” = 8.65x
    1/4” = 9.61x
    1/6” = 16x
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    963
    Mi Piace Ricevuti:
    56
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Forse ti sei dimenticato di citare il contenuto di "content", ok è tipo array, ma quali sono gli elementi su cui lavorare?
    un buffer, una stringa, array multidimensionali ibridi....
    PHP:
    $content['focal_length']
    cosa contiene?
     
  3. Shyson

    Shyson Utente Attivo

    Registrato:
    19 Agosto 2012
    Messaggi:
    1.119
    Mi Piace Ricevuti:
    1
    Punteggio:
    38
    Sesso:
    Maschio
    Quel codice in php me l'ha dato l'autore, mi ha detto che va modificato, ma non mi ha detto come.

    Questo invece, è la parte originale che c'è nel file del plugin, in pratica estrapola i dati EXIF dalla camera e li mette a video

    Codice:
    ...
    elseif ($key == 'focal_length' && !$imgmeta['image_meta'][$key] == 0)
                            $exif = $imgmeta['image_meta'][$key] . __('mm','exifography');
    ...
     
  4. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.859
    Mi Piace Ricevuti:
    286
    Punteggio:
    83
    Sesso:
    Maschio
    @Shyson
    Quando posti codice PHP devi usare il tag: PHP 2.png non il tag: Code2.png
    Grazie
     
  5. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    963
    Mi Piace Ricevuti:
    56
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Scusa, magari sarebbe utile vedere cosa contiene la variabile e contestualmente postarla?
    Quindi fai un print della var nella funzione e posta il risultato!
     
  6. Shyson

    Shyson Utente Attivo

    Registrato:
    19 Agosto 2012
    Messaggi:
    1.119
    Mi Piace Ricevuti:
    1
    Punteggio:
    38
    Sesso:
    Maschio
    Intendi dire cosa stampa?

    Questo viene stampato dal codice originale, come vedi la Lunghezza focale originale è 97mm per il sensore ridotto che monta questa macchina. In realtà però se questo obiettivo fosse montato su una Full frame 35mm l'obbiettivo equivalente sarebbe 157,14 (97x1.62 che è il fattore di conversione).

    Quello che intendo fare è modificare il codice in modo che mi stampa la Lunghezza di focale come fosse montata su una Full frame (157.14mm).
    Schermata 2019-10-06 alle 20.46.46.png
     
  7. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    963
    Mi Piace Ricevuti:
    56
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    No intendo dire:
     
  8. Shyson

    Shyson Utente Attivo

    Registrato:
    19 Agosto 2012
    Messaggi:
    1.119
    Mi Piace Ricevuti:
    1
    Punteggio:
    38
    Sesso:
    Maschio
    Non sono molto ferrato, fammi un esempio della mia variabile con Print che la provo.
     
  9. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    963
    Mi Piace Ricevuti:
    56
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    PHP:
    function change_focal_length($content) {
       
    print_r($content);die;
    //o in alternativa
    //dd($content);
    if (isset($content['focal_length']))
           
    $content['focal_length'] = '35mm';

       return 
    $content;
    }
    add_filter('exifography_display_exif','change_focal_length'); 
     
  10. Shyson

    Shyson Utente Attivo

    Registrato:
    19 Agosto 2012
    Messaggi:
    1.119
    Mi Piace Ricevuti:
    1
    Punteggio:
    38
    Sesso:
    Maschio
    Questo:

    PHP:
    Array ( [created_timestamp] =>
    Data22 Agosto 201607:40
    [camera] =>
    CameraCanon EOS 70D
    [focal_length] =>
    Lunghezza focale (35mm): 97mm
    [aperture] =>
    Aperturaƒ/4
    [shutter_speed] =>
    Velocità otturatore1/500s
    [iso] =>
    ISO200
    [flash] =>
    Flash attivatono
    )
     
  11. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    963
    Mi Piace Ricevuti:
    56
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Non trovo da nessuna parte la mappatura che hai postato...
    Come fai a convertire focal_length se manca/non trovo la base del calcolo... Al massimo una proporzione?
    Posta qualche risultato di una fotocamera che non abbia focal 35mm....
     
  12. Shyson

    Shyson Utente Attivo

    Registrato:
    19 Agosto 2012
    Messaggi:
    1.119
    Mi Piace Ricevuti:
    1
    Punteggio:
    38
    Sesso:
    Maschio
    Il codice che ha stampato print è simile a questo che si trova in un altro file del plugin:
    PHP:
        $this->fields = array(
                    
    'aperture' => __('Aperture''exifography'),
                    
    'credit' => __('Credit''exifography'),
                    
    'camera' => __('Camera''exifography'),
                    
    'caption' => __('Caption''exifography'),
                    
    'created_timestamp' => __('Taken''exifography'),
                    
    'copyright' => __('Copyright''exifography'),
                    
    'exposure_bias' => __('Exposure bias''exifography'),
                    
    'flash' => __('Flash fired''exifography'),
                    
    'focal_length' => __('Focal length''exifography'),
                    
    'iso' => __('ISO''exifography'),
                    
    //'lens' => __('Lens', 'exifography'),
                    
    'keywords' => __('Keywords''exifography'),
                    
    'location' => __('Location''exifography'),
                    
    'shutter_speed' => __('Shutter speed''exifography'),
                    
    'title' => __('Title''exifography'),
                );
    Questa foto è fatta con una full frame e l'obiettivo mostrato è 16mm reale
    Questo è il fattore di conversione per una full frame: 1x
    Schermata 2019-10-07 alle 10.06.35.png
     
    Ultima modifica: 7 Ottobre 2019
  13. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    963
    Mi Piace Ricevuti:
    56
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Mandi roba inutile... Manda l'array o lo stack di chiamate!
     
  14. Shyson

    Shyson Utente Attivo

    Registrato:
    19 Agosto 2012
    Messaggi:
    1.119
    Mi Piace Ricevuti:
    1
    Punteggio:
    38
    Sesso:
    Maschio
    Ho trovato una cosa del genere, ma non converte la focale

    PHP:
    function convert($focal_length$model) {
        
    $factor 1.0;

        if (
    $model == "4x5''") {
            
    $factor 0.27;
        }
        elseif (
    $model == "5x7''") {
            
    $factor 0.20;
        }
        elseif (
    $model == "1/6''") {
           
    $factor 16;
        }

        return (
    floatval($focal_length) * $factor) . "mm";
    }

    // Example
    echo convert("97mm""APS-C  (Canon)");  // Shows: "157.14mm"  
     
Sto caricando...

Condividi questa Pagina