图片字节获取基础

  1. 打开图片文件。
  2. 读取图片文件的内容。
  3. 将读取的内容转换为字节格式。

1. 打开图片文件

$fileHandle = fopen("image.jpg", "rb");

这里的"rb"模式表示以二进制读取模式打开文件。

2. 读取图片文件的内容

使用fread()函数可以读取文件指针指向的文件内容。例如,要读取整个文件的内容,可以使用以下代码:

$binaryData = fread($fileHandle, filesize("image.jpg"));

这里的filesize()函数用于获取文件的大小。

3. 将读取的内容转换为字节格式

读取的内容默认是字符串格式,如果需要将其转换为字节格式,可以使用bin2hex()函数。以下是一个完整的示例:

$fileHandle = fopen("image.jpg", "rb");
$binaryData = fread($fileHandle, filesize("image.jpg"));
fclose($fileHandle); // 关闭文件指针

// 转换为字节格式
$byteData = bin2hex($binaryData);
echo $byteData;

实例解析

1. 图片信息展示

list($width, $height, $type, $attr) = getimagesize("image.jpg");

echo "宽度: " . $width . "px<br>";
echo "高度: " . $height . "px<br>";
echo "类型: " . $type . "<br>";
echo "颜色深度: " . $attr . "<br>";

2. 图片加密

$binaryData = file_get_contents("image.jpg");
$key = "secretkey";
$encryptedData = "";

foreach (str_split($binaryData, 1) as $byte) {
    $encryptedData .= dechex(ord($byte) ^ ord($key{strlen($encryptedData) % strlen($key)}));
}

file_put_contents("encrypted_image.jpg", hex2bin($encryptedData));

3. 图片验证码生成

$width = 100;
$height = 30;
$image = imagecreatetruecolor($width, $height);
$background_color = imagecolorallocate($image, 255, 255, 255);
imagefilledrectangle($image, 0, 0, $width, $height, $background_color);

// 添加验证码文本
$code = "1234";
$font_color = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 5, 10, 5, $code, $font_color);

// 获取图片的字节数据
$binaryData = image2string($image);

// 保存图片
file_put_contents("captcha.jpg", $binaryData);

总结