[PHP] Convertire lunghezza di focale

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
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
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
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.
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?
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
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');
...
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@Shyson
Quando posti codice PHP devi usare il tag:
PHP 2.png
non il tag:
Code2.png

Grazie
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
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
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Non sono molto ferrato, fammi un esempio della mia variabile con Print che la provo.
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
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');
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Questo:

PHP:
Array ( [created_timestamp] =>
Data: 22 Agosto 2016, 07:40
[camera] =>
Camera: Canon EOS 70D
[focal_length] =>
Lunghezza focale (35mm): 97mm
[aperture] =>
Apertura: ƒ/4
[shutter_speed] =>
Velocità otturatore: 1/500s
[iso] =>
ISO: 200
[flash] =>
Flash attivato: no
)
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
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
Non trovo da nessuna parte la mappatura che hai postato...
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
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....
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
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:

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
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"
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Convertire Excel in PHP PHP 1
S [PHP] Convertire un orario in un numero decimale PHP 2
L [PHP] convertire gli url ad forma semplice PHP 3
G [PHP] Oracle, convertire una query multiline in Json PHP 3
L [PHP] Drupal convertire sito dinamico. CMS (Content Management System) 1
G [PHP] convertire data in formato italiano dopo query PHP 6
M [PHP] Convertire date da americana a italiana direttamente nel db PHP 6
L [PHP] Convertire web codeigniter in App PHP 0
alexbrasile PHP convertire la funzione fsockopen in curl PHP 0
T [PHP] Convertire Codice JAVA a PHP PHP 3
M [PHP] Come convertire data in formato testo PHP 4
A convertire php in apk Smartphone e tablet 0
D Convertire una stringa html in php PHP 5
U php-mysql script per convertire valori $_POST PHP 2
O Convertire sito php procedural in php object oriented PHP 4
A Convertire pagina php in .doc PHP 6
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4

Discussioni simili