php:jpeg mime type - 没有检测到质量为12的photoshop jpegs

时间:2017-05-31 11:59:04

标签: php jpeg mime-types photoshop

我正在创建一个小图像上传器表单,没什么特别的。只允许上传JPG文件 - 这将由php脚本检查:

import os
import tensorflow as tf

# Don't remove this, I need it to mitigate tf build warnings
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'


W = tf.Variable([.3], tf.float32)
b = tf.Variable([-.3], tf.float32)
x = tf.placeholder(tf.float32)
linear_model = W * x + b
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(linear_model, {x: [1, 2, 3, 4]}))

这对大多数jpg文件都有效,但我遇到过一些被拒绝的文件。我使用此网站检查了这些图片:http://mime.ritey.com/ 并发现它只返回$filesize = getimagesize($targetFile); if($filesize['mime'] != 'image/jpeg') { ... } 而不是预期的"Unknown MIME type"

深入研究非工作图像,我发现它是用photoshop和质量设置12保存的(不是“网页保存”对话框,只是常规保存对话框)。

如果我保存质量为11或更低的图像,则会将其识别为“image / jpeg”。接下来,如果我再次拍摄质量为11的图像并将其重新保存为12级,则它不再起作用了......

据我记忆,质量等级12没有正式指定为jpgs,这是Adobe的一项发明。所以我想这可能会导致问题。

仍然,那些jpgs在那里,所以有没有办法用php识别它们作为合法的jpeg文件?这种味道还有其他一些mime类型吗?或者其他一些方法来检查它们是jpeg(除了文件名后缀,这对我的情况来说不够可靠)。

1 个答案:

答案 0 :(得分:1)

如果mime类型未知,请重新创建图像:

$filesize = getimagesize($targetFile);

if($filesize['mime'] == 'Unknown MIME type') 
{
    $image = imagecreatefromjpeg($targetFile);
}