ホームページ >バックエンド開発 >PHPチュートリアル >PHP jQuery jCrop はトリミングされたアバターをオフラインでアップロードします (ソース コードが含まれています)

PHP jQuery jCrop はトリミングされたアバターをオフラインでアップロードします (ソース コードが含まれています)

WBOY
WBOYオリジナル
2016-06-13 12:54:241000ブラウズ

PHP jQuery jCrop トリミングされたアバターをオンラインでアップロード (ソース コードが含まれています)

ソース コードでは 2 つのオープン ソースの jQuery プラグインが使用されています。1 つは Ajax アップロード用の Uploadify プラグインで、カスタマイズできないものがたくさんあります。デモで使用すると完璧です。プロジェクトで使用されるアップロードのキャンセルと削除の機能は追加されていません。Flash を必要としない他の jQuery アップロード プラグインも使用できます。 2 つ目は jQuery jCrop で、アップロードされた画像をトリミングするために使用されます。



?
サーバー側で 3 つの PHP ファイルを作成しました。config.inc.php には、構成する必要がある唯一の関数が含まれています。アップロードされた画像は、フロント デスクによって呼び出される前に、幅と高さが 500 ピクセル以下の小さな画像に圧縮されます (デフォルト)。これは、ユーザーがより大きな画像をアップロードすると、容量が大きくなるだけではないためです。ストレージスペースだけでなく、サーバーによって大きな画像がトリミングされるため、追加の負荷がかかります。

function resize( $ori ){
    if( preg_match('/^http:\/\/[a-zA-Z0-9]+/', $ori ) ){
        return $ori;
    }
    $info = getImageInfo( ROOT_PATH . $ori );
    if( $info ){
        //上传图片后切割的最大宽度和高度
        $width = 500;
        $height = 500;
        $scrimg = ROOT_PATH . $ori;
        if( $info['type']=='jpg' || $info['type']=='jpeg' ){
            $im = imagecreatefromjpeg( $scrimg );
        }
        if( $info['type']=='gif' ){
            $im = imagecreatefromgif( $scrimg );
        }
        if( $info['type']=='png' ){
            $im = imagecreatefrompng( $scrimg );
        }
        if( $info['width']<=$width && $info['height']<=$height ){
            return;
        } else {
            if( $info['width'] > $info['height'] ){
                $height = intval( $info['height']/($info['width']/$width) );
            } else {
                $width = intval( $info['width']/($info['height']/$height) );
            }
        }
        $newimg = imagecreatetruecolor( $width, $height );
        imagecopyresampled( $newimg, $im, 0, 0, 0, 0, $width, $height, $info['width'], $info['height'] );
        imagejpeg( $newimg, ROOT_PATH . $ori );
        imagedestroy( $im );
    }
    return;
}

?他の 2 つのファイル、upload.php とsize.php は、フロントエンドの Ajax リクエスト画像のアップロードとトリミングにそれぞれ使用されます。必要な画像が 1 つだけで、元の画像を保持する必要がない場合、resize.php は最初のステップでアップロードされた圧縮画像を切り取って N 個の画像にコピーすることに注意してください。元の画像に直接保存することで、多くのリソースを節約できます。画像処理には GD ライブラリを使用しますが、imagick を使用することをお勧めします。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。