GD @imagecreatefromjpeg死于图像

时间:2016-01-18 18:38:45

标签: php gd

我正在尝试从jpeg文件创建一个图像(但是在打开它的副本进行转换时它有一些Adobe RGB,Gimp警告)。

原始文件位于http://learnintouch.com/Bernadotte.jpg

我的源代码:

不会显示die语句。

try {
  $image = @imagecreatefromjpeg($file);
  die("$file");
} catch (Exception $e) {
  reportError("Could not use imagecreatefromjpeg() to create an image from the $file file.");
  exit();
}

或者:

仅显示打印A.

      try {
print("A");
        $copy = imagecreatefrompng($filename);
print("B");
      } catch (Exception $e) {
print("C");
        reportError("Could not use imagecreatefrompng() to create an image from the $filename file. " . $e->getMessage());
        exit();
      }

捕获物不会运行。

执行在imagecreatefromjpeg方法内部死亡。

我使用的是PHP 5.6.16,GD是:

GD Support  enabled
GD Version  bundled (2.1.0 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.4.9
GIF Read Support    enabled
GIF Create Support  enabled
JPEG Support    enabled
libJPEG Version 8
PNG Support enabled
libPNG Version  1.2.49
WBMP Support    enabled
XBM Support enabled

1 个答案:

答案 0 :(得分:0)

这是你的问题:

@imagecreatefromjpeg($file);

@suppress any errors的“错误控制运算符”。来自文档:

  

目前,“@”错误控制运营商前缀甚至会禁用   错误报告将终止脚本的严重错误   执行。除此之外,这意味着如果你使用“@”来   抑制某个功能的错误,并且它不可用   或者错误输入,脚本将在那里死亡   指示为什么。

我怀疑是会引发异常,但由于@已将错误级别设置为0,因此reportError函数未按预期运行。 (如果没有看到这个函数,我可能无法确认这一点,也许您对日志记录情况了解得更多。)无论如何,如果您打算处理@中的错误,您应该删除try/catch:只有在运算符合适的时候才需要在调出可以处理错误的框架或代码时抑制错误。