안녕하세요, 저는 CLI에서 작동하는 다음 코드를 C 언어로 작성했습니다. 이제 PHP로 변환하고 싶습니다. 그러나 변환하는 데 어려움이 있습니다. 모든 단서?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) );
}
}
}
부분은 제가 이미지에서 올바른 색상을 얻을 제대로 PHP를 사용하여 변환 할 수 pixel.red < < 16 일,이다와 붙어입니다.
여기에 지금까지 PHP 코드입니다 :
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));
}
}
}
시작한 PHP 코드를 알려주십시오. – Brad
은 빨간색 바이트를 16 비트 왼쪽으로 시프트합니다. 색상을 0xRRGGBB에 의해 주어진 16 진수로 생각하고 각 hexgit가 4 비트라고 생각하면 그 일이 무엇인지 볼 수 있어야합니다. PHP는 비트 시프 팅을 지원합니다. 문제가 어디 있니? – mpen
PHP 코드가 추가되었습니다! – arieltools