Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中创建方形1:1缩略图_Php_Image_Thumbnails - Fatal编程技术网

在PHP中创建方形1:1缩略图

在PHP中创建方形1:1缩略图,php,image,thumbnails,Php,Image,Thumbnails,如何将此代码设置为以1:1(正方形)返回图像 其目的是创建方形(非拉伸)缩略图 我试着在“如果部分”中进行更改。我得到一个正方形的图像,但是被拉伸了。我想把它剪下来 define('THUMBNAIL_IMAGE_MAX_WIDTH', 150); define('THUMBNAIL_IMAGE_MAX_HEIGHT', 150); $source_image_path = {here the source filename}; $thumbnail_image_path = {here de

如何将此代码设置为以1:1(正方形)返回图像

其目的是创建方形(非拉伸)缩略图

我试着在“如果部分”中进行更改。我得到一个正方形的图像,但是被拉伸了。我想把它剪下来

define('THUMBNAIL_IMAGE_MAX_WIDTH', 150);
define('THUMBNAIL_IMAGE_MAX_HEIGHT', 150);

$source_image_path = {here the source filename};
$thumbnail_image_path = {here de thumb filename};

list($source_image_width, $source_image_height, $source_image_type) = getimagesize($source_image_path);
switch ($source_image_type) {
    case IMAGETYPE_GIF:
    $source_gd_image = imagecreatefromgif($source_image_path);
    break;
    case IMAGETYPE_JPEG:
    $source_gd_image = imagecreatefromjpeg($source_image_path);
    break;
    case IMAGETYPE_PNG:
    $source_gd_image = imagecreatefrompng($source_image_path);
    break;
}
$source_aspect_ratio = $source_image_width / $source_image_height;
$thumbnail_aspect_ratio = THUMBNAIL_IMAGE_MAX_WIDTH / THUMBNAIL_IMAGE_MAX_HEIGHT;
if ($source_image_width <= THUMBNAIL_IMAGE_MAX_WIDTH && $source_image_height <= THUMBNAIL_IMAGE_MAX_HEIGHT) {
    $thumbnail_image_width = $source_image_width;
    $thumbnail_image_height = $source_image_height;
} elseif ($thumbnail_aspect_ratio > $source_aspect_ratio) {
    $thumbnail_image_width = (int) (THUMBNAIL_IMAGE_MAX_HEIGHT * $source_aspect_ratio);
    $thumbnail_image_height = THUMBNAIL_IMAGE_MAX_HEIGHT;
} else {
    $thumbnail_image_width = THUMBNAIL_IMAGE_MAX_WIDTH;
    $thumbnail_image_height = (int) (THUMBNAIL_IMAGE_MAX_WIDTH / $source_aspect_ratio);
}
$thumbnail_gd_image = imagecreatetruecolor($thumbnail_image_width, $thumbnail_image_height);
imagecopyresampled($thumbnail_gd_image, $source_gd_image, 0, 0, 0, 0, $thumbnail_image_width, $thumbnail_image_height, $source_image_width, $source_image_height);
imagejpeg($thumbnail_gd_image, $thumbnail_image_path, 90);
define('缩略图图像最大宽度',150);
定义(“缩略图图像最大高度”,150);
$source_image_path={这里是源文件名};
$thumbnail\u image\u path={here de thumb filename};
列表($source\u image\u width、$source\u image\u height、$source\u image\u type)=getimagesize($source\u image\u path);
开关($source\u image\u type){
案例图像类型\u GIF:
$source\u gd\u image=imagecreatefromformgif($source\u image\u path);
打破
case IMAGETYPE_JPEG:
$source\u gd\u image=imagecreatefromjpeg($source\u image\u path);
打破
案例IMAGETYPE_PNG:
$source\u gd\u image=imagecreatefrompng($source\u image\u path);
打破
}
$source\u aspect\u ratio=$source\u image\u width/$source\u image\u height;
$thumbnail\u aspect\u ratio=缩略图图像最大宽度/缩略图图像最大高度;

如果($source\u image\u width使用此代码,则此代码将图像上载到文件夹并重命名文件,并将使用相同的名称创建thumb

HTML

图像目录
“upimg/”

拇指目录
thimg

php处理

$rename = md5(rand() * time());
        $add = "upimg/" . $rename . $_FILES['userfile']['name'];
        if (move_uploaded_file($_FILES['userfile']['tmp_name'], $add)) {
            echo "Successfully uploaded the image";
            chmod("$add", 0777);
        } else {
            exit;
        }
        $n_width = 200;
        $n_height = 200;
        $tsrc = "thimg/" . $rename . $_FILES['userfile']['name'];
        if (!($_FILES['userfile']['type'] == "image/jpeg" OR $_FILES['userfile']['type'] == "image/gif")) {
            exit;
        }
        if ($_FILES['userfile']['type'] == "image/gif") {
            $im = ImageCreateFromGIF($add);
            $width = ImageSx($im);
            $height = ImageSy($im);
            $newimage = imagecreatetruecolor($n_width, $n_height);
            imageCopyResized($newimage, $im, 0, 0, 0, 0, $n_width, $n_height, $width, $height);
            if (function_exists("imagegif")) {
                Header("Content-type: image/gif");
                ImageGIF($newimage, $tsrc);
            } elseif (function_exists("imagejpeg")) {
                Header("Content-type: image/jpeg");
                ImageJPEG($newimage, $tsrc);
            }
            chmod("$tsrc", 0777);
        }
        if ($_FILES['userfile']['type'] == "image/jpeg") {
            $im = ImageCreateFromJPEG($add);
            $width = ImageSx($im);
            $height = ImageSy($im);
            $newimage = imagecreatetruecolor($n_width, $n_height);
            imageCopyResized($newimage, $im, 0, 0, 0, 0, $n_width, $n_height, $width, $height);
            ImageJpeg($newimage, $tsrc);
            chmod("$tsrc", 0777);
        }
成功了

function crop_img($imgSrc){
    //getting the image dimensions
    list($width, $height) = getimagesize($imgSrc);

    //saving the image into memory (for manipulation with GD Library)
    $myImage = imagecreatefromjpeg($imgSrc);

    // calculating the part of the image to use for thumbnail
    if ($width > $height) {
        $y = 0;
        $x = ($width - $height) / 2;
        $smallestSide = $height;
    } else {
        $x = 0;
        $y = ($height - $width) / 2;
        $smallestSide = $width;
    }

    // copying the part into thumbnail
    $thumbSize = min($width,$height);
    $thumb = imagecreatetruecolor($thumbSize, $thumbSize);
    imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide);

    unlink($imgSrc);
    imagejpeg($thumb,$imgSrc);
    @imagedestroy($myImage);
    @imagedestroy($thumb);
}

发现于:

可能的副本您希望图片缩放并居中成正方形,还是希望从照片中间裁剪出正方形我希望它被裁剪。(这不是副本,我已经阅读了本主题的几个问题,但我无法将其与我的代码集成)我想创建一个缩略图,我想创建一个缩略图。从读取代码我猜这返回了一个200×200像素的缩略图,其中的原始图像调整了大小,居中(黑色背景)。我需要的是原始图像裁剪并缩放到一个正方形。