1

画像のサイズを 100 x 100 の画像に変更していますが、これはうまく機能しています。

しかし.....元の縦横比を維持したいと思います。したがって、元の画像の幅または高さが大きいかどうかを判断し、残りの 100 x 100 画像を透明度で塗りつぶす必要があります。

したがって、縦長の場合、高さは 100 になり、画像の左右は透明になります。

横長の場合、幅は 100 になり、画像の上部と下部は透明になります。

これは可能ですか?

ここに私の機能があります

// This function will proportionally resize image 
function resizeImage($CurWidth,$CurHeight,$MaxSize,$DestFolder,$SrcImage,$Quality,$ImageType)
{
    //Check Image size is not 0
    if($CurWidth <= 0 || $CurHeight <= 0) 
    {
        return false;
    }

    //Check Image size is not 0
    else if($CurWidth >= 1 && $CurWidth <= 100 || $CurHeight >= 1 && $CurHeight <= 100) 
    {
    //Construct a proportional size of new image
    $NewWidth           = $CurWidth;
    $NewHeight          = $CurHeight;
    $NewCanves          = imagecreatetruecolor($NewWidth, $NewHeight);
    }
    else if($CurWidth >= 101 || $CurHeight >= 101) 
    {
    //Construct a proportional size of new image
    $ImageScale         = min($MaxSize/$CurWidth, $MaxSize/$CurHeight); 
    $NewWidth           = ceil($ImageScale*$CurWidth);
    $NewHeight          = ceil($ImageScale*$CurHeight);
    $NewCanves          = imagecreatetruecolor($NewWidth, $NewHeight);
    }

    /* fix PNG transparency issues */                       
    imagefill($NewCanves, 0, 0, IMG_COLOR_TRANSPARENT);         
    imagesavealpha($NewCanves, true);      
    imagealphablending($NewCanves, true);                 

    // Resize Image
    if(imagecopyresampled($NewCanves, $SrcImage,0, 0, 0, 0, $NewWidth, $NewHeight, $CurWidth, $CurHeight))
    {
        switch(strtolower($ImageType))
        {
            case 'image/PNG':
            case 'image/png':
                imagepng($NewCanves,$DestFolder);
                break;
            case 'image/gif':
                imagegif($NewCanves,$DestFolder);
                break;          
            case 'image/JPG':
            case 'image/JPEG':
            case 'image/jpeg':
            case 'image/pjpeg':
                imagejpeg($NewCanves,$DestFolder,$Quality);
                break;
            default:
                return false;
        }
    //Destroy image, frees memory   
    if(is_resource($NewCanves)) {imagedestroy($NewCanves);} 
    return true;
    }

}
4

0 に答える 0