? ? ? ?//創(chuàng)建一個裁剪大小的畫布
? ? ? ? $thumb = imagecreatetruecolor($width, $height);
? ? ? ? //原base64圖片(其他的轉(zhuǎn)成base64類型)碱呼,創(chuàng)建新的圖像
? ? ? ? $im = imagecreatefrompng($data);
? ? ? ?//判斷照片位置是否旋轉(zhuǎn)過
? ? ? ?$exif = exif_read_data($image);
? ? ? ?if (isset($exif['Orientation'])) {
? ? ? ? ? ? $orientation = $exif['Orientation'];
? ? ? ? ? ? ?switch ($orientation) {
? ? ? ? ? ? ? ? ? ? ?case 2:
? ? ? ? ? ? ? ? ? ? ?imageflip($im, IMG_FLIP_HORIZONTAL);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? ? $im = imagerotate($im, 180, 0);
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? ? ? ? ?imageflip($im, IMG_FLIP_VERTICAL);
? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ? ? ?case 5:
? ? ? ? ? ? ? ? ? ? ? ?$im = imagerotate($im, -90, 0);
? ? ? ? ? ? ? ? ? ? ? ? imageflip($im, IMG_FLIP_HORIZONTAL);
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 6:
? ? ? ? ? ? ? ? ? ? ? ? $im = imagerotate($im, -90, 0);
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 7:
? ? ? ? ? ? ? ? ? ? ? ? $im = imagerotate($im, 90, 0);
? ? ? ? ? ? ? ? ? ? ? ? ?imageflip($im, IMG_FLIP_HORIZONTAL);
? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? ? case 8:
? ? ? ? ? ? ? ? ? ? ? ? ?$im = imagerotate($im, 90, 0);
? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? }
}
? ? ? ? //根據(jù)像素點(x,y,width,height)脆荷,復(fù)制圖像的一部分到畫布
? ? ? ? imagecopy($thumb, $im, 0, 0, $left_x, $left_y, $width, $height);
? ? ? ? ob_start();
? ? ? ? //輸出圖片到緩存區(qū)
? ? ? ? imagepng($thumb);
? ? ? ? //從緩存區(qū)獲取內(nèi)容
? ? ? ? $contents = ob_get_contents();
? ? ? ? //清空并關(guān)閉緩存區(qū)
? ? ? ? ob_end_clean();
? ? ? ? //輸出裁剪后的base64圖片
? ? ? ? base64_encode($contents);