こんにちは私は、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