que estaba buscando una solución para esto también. Al final usé PHP para reescribir el JPEG con TODOS los datos Exif eliminados. No necesitaba nada para mis propósitos.
Esta opción tiene varias ventajas ...
- El archivo es más pequeño porque los datos EXIF se ha ido.
- No hay pérdida de calidad de imagen (porque los datos de la imagen no se modifican).
También una nota sobre el uso de imagecreatefromjpeg: Intenté esto y mis archivos crecieron. Si establece la calidad en 100, su archivo será MÁS GRANDE, porque la imagen ha sido remuestreada y luego almacenada de manera sin pérdida. Y si no usa calidad 100, pierde calidad de imagen. La ÚNICA forma de evitar el remuestreo es no usar imagecreatefromjpeg.
Aquí está mi función ...
function removeExif($old, $new)
{
$f1 = fopen($old, 'rb');
$f2 = fopen($new, 'wb');
// Find EXIF marker
while (($s = fread($f1, 2))) {
$word = unpack('ni', $s)['i'];
if ($word == 0xFFE1) {
// Read length (includes the word used for the length)
$s = fread($f1, 2);
$len = unpack('ni', $s)['i'];
// Skip the EXIF info
fread($f1, $len - 2);
break;
} else {
fwrite($f2, $s, 2);
}
}
// Write the rest of the file
while (($s = fread($f1, 4096))) {
fwrite($f2, $s, strlen($s));
}
fclose($f1);
fclose($f2);
}
¿no es esto una recompresión del jpg? Gracias. – tau
Utilice '$ res = imagecreatefromjpeg ($ filename)' para cargar la imagen, luego 'imagejpeg ($ res, $ filename, QUALITY)', ponga 100 en Calidad - la pérdida, si la hay, debe ser mínima. –
@ ring0: gracias! intentaré esto tan pronto como tenga la oportunidad (más tarde hoy). – tau