我正在创建一个小图像上传器表单,没什么特别的。只允许上传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(除了文件名后缀,这对我的情况来说不够可靠)。
答案 0 :(得分:1)
如果mime类型未知,请重新创建图像:
$filesize = getimagesize($targetFile);
if($filesize['mime'] == 'Unknown MIME type')
{
$image = imagecreatefromjpeg($targetFile);
}