16) & 0xFF; -6ren">
gpt4 book ai didi

php - 如何使用 PHP 将 "true-color"图像转换为 "black-and-white"图像?

转载 作者:行者123 更新时间:2023-12-04 16:45:13 25 4
gpt4 key购买 nike

首先,我有一张原始图像,它是一张真彩色图像。它保存在 JPEG 中格式:

*#1*. The original image.

此原始图片保存为:24 位图像。


然后,在运行这个简单的脚本后,我可以将它转换成灰度图像:

<?php 

$source_file = "1.JPG";

$im = ImageCreateFromJpeg($source_file);

$imgw = imagesx($im);
$imgh = imagesy($im);

for ($i=0; $i<$imgw; $i++)
{
for ($j=0; $j<$imgh; $j++)
{

// Get the RGB value for current pixel

$rgb = ImageColorAt($im, $i, $j);

// Extract each value for: R, G, B

$rr = ($rgb >> 16) & 0xFF;
$gg = ($rgb >> 8) & 0xFF;
$bb = $rgb & 0xFF;

// Get the value from the RGB value

$g = round(($rr + $gg + $bb) / 3);

// Gray-scale values have: R=G=B=G

$val = imagecolorallocate($im, $g, $g, $g);

// Set the gray value

imagesetpixel ($im, $i, $j, $val);
}
}

header('Content-type: image/jpeg');
imagejpeg($im);

?>

下面是结果:

*#2*. The gray-scale image.

此灰度图片保存为:8 位图像。


现在,我想将其转换为真实 黑白图像:

*#3*. The black-and-white image.

这张黑白图片保存为:1 位图像。


你能告诉我:如何使用 PHP 将真彩色图像转换为黑白图像吗

最佳答案

friend 在您的代码中将灰度颜色四舍五入为黑色或白色。(根据您的要求更改或更改 if($g> 0x7F))

 $g = (r + g + b) / 3
if($g> 0x7F) //you can also use 0x3F 0x4F 0x5F 0x6F its on you
$g=0xFF;
else
$g=0x00;

你的完整代码应该是这样的:

<?php 

$source_file = "1.JPG";

$im = ImageCreateFromJpeg($source_file);

$imgw = imagesx($im);
$imgh = imagesy($im);

for ($i=0; $i<$imgw; $i++)
{
for ($j=0; $j<$imgh; $j++)
{

// Get the RGB value for current pixel

$rgb = ImageColorAt($im, $i, $j);

// Extract each value for: R, G, B

$rr = ($rgb >> 16) & 0xFF;
$gg = ($rgb >> 8) & 0xFF;
$bb = $rgb & 0xFF;

// Get the value from the RGB value

$g = round(($rr + $gg + $bb) / 3);

// Gray-scale values have: R=G=B=G

//$g = (r + g + b) / 3
if($g> 0x7F) //you can also use 0x3F 0x4F 0x5F 0x6F its on you
$g=0xFF;
else
$g=0x00;



$val = imagecolorallocate($im, $g, $g, $g);

// Set the gray value

imagesetpixel ($im, $i, $j, $val);
}
}

header('Content-type: image/jpeg');
imagejpeg($im);

?>

您还可以使用以下替代代码逻辑

<?php 

header("content-type: image/jpeg");
$img = imagecreatefromjpeg('1.jpg');
imagefilter($img, IMG_FILTER_GRAYSCALE); //first, convert to grayscale
imagefilter($img, IMG_FILTER_CONTRAST, -255); //then, apply a full contrast
imagejpeg($img);

?>

关于php - 如何使用 PHP 将 "true-color"图像转换为 "black-and-white"图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38517795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com