Привет, у меня есть следующий код для работы CLI, сделанный на C. Я хочу сейчас перевести его на PHP, но я застрял на преобразовании цвета.Есть какие-нибудь подсказки?
for (size_t y = 0; y < targetHeight; y++) {
for (size_t x = 0; x < targetWidth; x++) {
// Convertimos el color
png::rgba_pixel_16 pixel = renderImage[y][x];
uint alpha = pixel.alpha / 256;
if (alpha > 0) {
minX = minX < x ? minX : x;
maxX = maxX > x ? maxX : x;
minY = minY < y ? minY : y;
maxY = maxY > y ? maxY : y;
jpgImage->setPixel(x, y, (pixel.red/256 << 16) + (pixel.green/256 << 8) + pixel.blue/256 ) ;
uint mP = mapImage->pixel(x, y);
mapImage->setPixel(x, y, mP + (alpha<<16) );
}
}
}
Часть, с которой я застрял, - это pixel.red << 16, где я не могу получить правильные цвета из изображения и правильно преобразовать их с помощью PHP.Вот код PHP на данный момент: </p>
for ($y = 0; $y < HEIGHT; $y++) {
for ($x = 0; $x < WIDTH; $x++) {
// Convertimos el color
$pixel = imagecolorat($render_img, $x, $y);
//$pixel = imagecolorat($render_img, $y, $x);
$rgba = imagecolorsforindex($render_img, $pixel);
$currentAlpha = $rgba['alpha']/256;
//$alpha = pixel.alpha / 256;
if ($currentAlpha > 0) {
$minX = $minX < $x ? $minX : $x;
$maxX = $maxX > $x ? $maxX : $x;
$minY = $minY < $y ? $minY : $y;
$maxY = $maxY > $y ? $maxY : $y;
imagesetpixel ($result_jpg_image, $x, $y, ($rgba['red']/256<<16) + ($rgba['green']/256<<8) + ($rgba['blue']/256));
//imagesetpixel ($result_jpg_image, $x, $y, ($rgba['red'] << 16) + ($rgba['green'] << 8) + ($rgba['blue']));
//jpgImage->setPixel(x, y, (pixel.red/256 << 16) + (pixel.green/256 << 8) + pixel.blue/256 ) ;
$pixel = imagecolorat($zMap, $x, $y);
imagesetpixel ($zMap, $x, $y, ($pixel + $currentAlpha<<16));
}
}
}