2014-05-21 14 views
7

Nel mio sito Web ho un tag file input per caricare foto/video. Quando il sito Web viene aperto in Safari mobile e quando si fa clic sull'input del file, viene visualizzata una scheda Azione con 3 opzioni take photo or Video, choose Existing e cancel. È comunque necessario determinare in js che il file sia stato prelevato dalla fotocamera (take photo or video) o importato (choose existing) dal rullino fotografico?Come rilevare se foto/video è stata presa dalla fotocamera o importata dal rullino fotografico in iphone safari

+0

Potresti utilizzare una libreria come [questo] (https://github.com/exif-js/exif-js) per controllare i metadati? Se è stato preso negli ultimi secondi, si potrebbe presumere che sia stato preso dal telefono. Solo un'idea – jmaz

risposta

0

ho una soluzione PHP implementata da questo, io non sono sicuro che che sta per aiutarti, ma qui è il codice:

<?php 

$camera = cameraUsed("C:\Users\Ale\Pictures\sep7imodia.jpg"); 
echo "Camera Used: " . $camera['make'] . " " . $camera['model'] . "<br />"; 
echo "Exposure Time: " . $camera['exposure'] . "<br />"; 
echo "Aperture: " . $camera['aperture'] . "<br />"; 
echo "ISO: " . $camera['iso'] . "<br />"; 
echo "Date Taken: " . $camera['date']; 

// This function is used to determine the camera details for a specific image. It returns an array with the parameters. 

function cameraUsed($imagePath) { 

// Check if the variable is set and if the file itself exists before continuing 
if ((isset($imagePath)) and (file_exists($imagePath))) { 

    // There are 2 arrays which contains the information we are after, so it's easier to state them both 
    $exif_ifd0 = read_exif_data($imagePath ,'IFD0' ,0);  
    $exif_exif = read_exif_data($imagePath ,'EXIF' ,0); 

    //error control 
    $notFound = "Unavailable"; 

    // Make 
    if (@array_key_exists('Make', $exif_ifd0)) { 
    $camMake = $exif_ifd0['Make']; 
    } else { $camMake = $notFound; } 

    // Model 
    if (@array_key_exists('Model', $exif_ifd0)) { 
    $camModel = $exif_ifd0['Model']; 
    } else { $camModel = $notFound; } 

    // Exposure 
    if (@array_key_exists('ExposureTime', $exif_ifd0)) { 
    $camExposure = $exif_ifd0['ExposureTime']; 
    } else { $camExposure = $notFound; } 

    // Aperture 
    if (@array_key_exists('ApertureFNumber', $exif_ifd0['COMPUTED'])) { 
    $camAperture = $exif_ifd0['COMPUTED']['ApertureFNumber']; 
    } else { $camAperture = $notFound; } 

    // Date 
    if (@array_key_exists('DateTime', $exif_ifd0)) { 
    $camDate = $exif_ifd0['DateTime']; 
    } else { $camDate = $notFound; } 

    // ISO 
    if (@array_key_exists('ISOSpeedRatings',$exif_exif)) { 
    $camIso = $exif_exif['ISOSpeedRatings']; 
    } else { $camIso = $notFound; } 

    $return = array(); 
    $return['make'] = $camMake; 
    $return['model'] = $camModel; 
    $return['exposure'] = $camExposure; 
    $return['aperture'] = $camAperture; 
    $return['date'] = $camDate; 
    $return['iso'] = $camIso; 
    return $return; 

} else { 
    return false; 
} 
} 

?> 

si può prendere la macchina fotografica $ [ 'data'] valore da confrontare con il datetime effettivo, e se ci sono pochi secondi di differenza, si può presumere che sia stata presa dal telefono proprio ora.

Problemi correlati