根据
http://php.net/manual/en/function.imagecreatetruecolor.php
它会创建一个新的真彩色图像
但更进一步的是状态:
...返回表示a的图像标识符 指定大小的黑色图像。
这是我用于图像上传(创建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;
}
答案 0 :(得分:3)
“这么多”?只有一个。由于无法更改画布大小,因此必须创建新画布(图像资源)以调整图像大小。
现在,至于imagecreatetruecolor
与imagecreate
相对的是什么,您需要了解有两种主要的颜色表示形式:
索引颜色,文件由一个颜色的托盘组成,其余图像类似于“按颜色分类”的书。除了引用此索引中的颜色之外,indixes没有任何意义。
真彩色,其中图像的每个像素都完全指定其颜色。
这意味着直接蝙蝠索引颜色图像比真彩色图像小四倍(对于颜色索引使用1个字节而不是整个颜色使用4个字节),但是它限制为256种不同颜色,并且通常其中一个是透明的。
现在,由于您使用的是JPEG,因此您需要使用imagecreatetruecolor
,因为JPEG压缩几乎需要这样做。 JPEG不支持索引图像。