gpt4 book ai didi

php - 防止 imagejpeg() 保存图像的 EXIF 数据(规范。FileDateTime)

转载 作者:可可西里 更新时间:2023-11-01 12:29:18 24 4
gpt4 key购买 nike

我们的服务器正在将 EXIF 数据保存到使用 imagejpeg() 保存的每个文件中。据我所知,这不是默认行为(根据我的阅读,这甚至是可能的)。但是,它正在发生,并且由于包含了 FileDateTime 信息(并使用保存的 time),它破坏了我们的功能上传/批准系统(md5_file() 由于 FileDateTime 始终不同,因此对完全相同的图像返回不同的值)。

有没有办法阻止 imagejpeg() 默认保存图像的 EXIF 数据?

服务器信息

  • 中央操作系统 5
  • Parallels Plesk 面板 10.4.4
  • GD 版本:捆绑(兼容 2.0.34)
  • PHP 5.3

代码

<?php
public function upload_book_cover($book, $cover, $filename = NULL, $approved = NULL){
global $c_consummo, $user;
$approved = bool($approved, true, true);
if(filesize($cover)>5242880){
return false; // Too large;
}
$max_width = 450;
$cover_info = getimagesize($cover);
if(!$this->is_valid_book_cover_type($cover_info['mime'])){
return false; // Invalid image type
}
$width = $cover_info[0];
$height = $cover_info[1];
if($width<200){
return false; // Too small
} elseif($width>1500){
return false; // Too wide
}
$original_cover = false;
switch($cover_info[2]){
case IMAGETYPE_GIF:
$original_cover = imagecreatefromgif($cover);
break;
case IMAGETYPE_JPEG:
$original_cover = imagecreatefromjpeg($cover);
break;
case IMAGETYPE_PNG:
$original_cover = imagecreatefrompng($cover);
break;
case IMAGETYPE_BMP:
$original_cover = imagecreatefrombmp($cover);
break;
}
if(!$original_cover){
return false; // Unsupported type
}
if($width>$max_width){
$new_width = $max_width;
} else {
$new_width = $width;
}
$new_height = round($height*($new_width/$width));
$new_cover = imagecreatetruecolor($new_width, $new_height);
if(!$new_cover){
return false; // Could not create true color image
}
if(!imagecopyresampled($new_cover, $original_cover, 0, 0, 0, 0, $new_width, $new_height, $width, $height)){
return false; // Could not copy image
}
if(!imagejpeg($new_cover, $cover, 100)){
return false; // Image could not be saved to tmp file
// This is adding *new* EXIF data to images by itself
}
$file_hash = md5_file($cover);
$duplicate_book_cover = $this->find_duplicate_book_cover($book, $file_hash);
if($duplicate_book_cover){
return $duplicate_book_cover;
}
$file_id = $c_consummo->upload_file($cover, $filename);
...
}

最佳答案

看起来您已经在这里尝试了几种方法,但让我们再试一种。您的应用程序中是否需要 EXIF 信息?如果没有,让我们取消对 EXIF 的支持,看看是否能完全删除它。

如果它没有删除它,那么可能函数正在从现有照片中读取它,然后只是盲目地将它包含在写入的文件中。你可以通过在每个过程中打印出EXIF信息来确定

关于php - 防止 imagejpeg() 保存图像的 EXIF 数据(规范。FileDateTime),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com