0

PHP画像リソースに変換する前の画像

imagepng を使用して php リソースと png に変換した後の画像

現在、imagepng を使用して、元の画像に基づく画像リソースを png 画像タイプに変換しています。これは、私の jpg に対して imagejpeg 関数が作成していたよりも高いレベルの品質を持っていることが証明されました。

ただし、これら 2 つの関数の圧縮アルゴリズムは、Photoshop などの圧縮アルゴリズムほど高品質ではないことがはっきりとわかります。

高品質の jpeg を取得する方法を知っている人はいますか? 画像リソースの形式と、それを jpeg または png に変換する方法に関するドキュメントはありますか? その情報があれば、少なくともより良いアルゴリズムの実装を試みることができます。

//Create image
        $im = apppic($filename, $colors);
        imagepng($im, "images/app/".rtrim($path_array[$count],"jpeg")."png", 0);

function promopic ($filename, $colors){


    if(@imagecreatefromjpeg($filename))
            $img = imagecreatefromjpeg($filename);
    elseif(@imagecreatefrompng($filename))
            $img = imagecreatefrompng($filename);
    elseif(@imagecreatefromgif($filename))
            $img = imagecreatefromgif($filename);
    $width = imagesx($img);
    $height = imagesy($img);
    $imHeight = 625;

    if( $width/$height > 4/5){$imWidth = 800; $imHeight = $height/$width*$imWidth ; }
    else {  $imWidth = $width/$height*$imHeight;  }

    $colorWidth = 1200 - $imWidth;
    $numColors = count($colors);
    $colorHeight = ceil($imHeight/$numColors) - 2;
    $imHeight = ceil($imHeight/$numColors)* $numColors - 2;


    $im = @imagecreate(1200, $imHeight+50)
        or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 250, 250, 250);
    $text_color = imagecolorallocate($im, 255, 255, 251);
    $blue_color = imagecolorallocate($im, 40, 5, 251);


    //Add color boxes
    for ($i = 1; $i <= $numColors; $i++) {
        $imcolorbox = @imagecreate($colorWidth, $colorHeight);
        $rgb = hex2rgb($colors[($i-1)]);

        $colorbox_color = imagecolorallocate($imcolorbox, $rgb[0], $rgb[1], $rgb[2]);
        $dest_x = 1200-$colorWidth;
        $dest_y = ($colorHeight + 2) * ($i-1);

        $copy_image = imagecopy($im, $imcolorbox,  $dest_x, $dest_y, 0, 0, $colorWidth, $colorHeight);
        imagedestroy($imcolorbox);
        //imagestring($im, 5, 1075, 2+$dest_y,  "Reinvogue.com", $text_color);
        //imagestring($im, 5, $imWidth+5, 2+$dest_y,  "Reinvogue.com", $text_color);
        //imagestring($im, 5, 1050, 17+$dest_y,  "Hex: ".$colors[($i-1)], $text_color);
        //imagestring($im, 5, 1050, 2+$dest_y,  "RGB: ".$rgb[0]." ".$rgb[1]." ".$rgb[2], $text_color);
    }

     imagestring($im, 5, 10, $imHeight+15,  "Powered by the Reinvogue.com Colorway Engine", $blue_color);


    $copy_image = imagecopyresampled($im, $img,  0, 0, 0, 0, $imWidth-2, $imHeight, $width, $height);
    return $im;
}
4

2 に答える 2