根据
http://php.net/manual/en/function.imagecreatetruecolor.php
它创建了一个新的真彩色图像
但更进一步的是状态:
...返回一个图像标识符,表示指定大小的黑色图像。
这是我用于图像上传(创建 JPEG)的一些样板代码,如下所示:
private function createFinalJPEG($max, $path)
{
$this->makeDimensions($max);
$this->image_y = imagecreatetruecolor($this->new_width, $this->new_height);
imagecopyresampled($this->image_y, $this->image_z, 0, 0, 0, 0,
$this->new_width, $this->new_height,
$this->original_width, $this->original_height);
imagejpeg($this->image_y, $path);
imagedestroy($this->image_y);
}
一般来说,我需要这么多中间图像表示来生成最终文件吗?
imagecreatetruecolor 是否只是创建一个哑黑色图像用作 imagecopyresampled 可以使用的占位符?
作为回应,这里的答案是 image_z 是如何创建的:
private function createImageZ($path)
{
$type_creators = array(
'image/gif' => 'imagecreatefromgif',
'image/pjpeg' => 'imagecreatefromjpeg',
'image/jpeg' => 'imagecreatefromjpeg',
'image/png' => 'imagecreatefrompng');
if(array_key_exists($this->fileType, $type_creators))
{
$this->image_z = $type_creators[$this->fileType]($path);
return true;
}
return false;
}