Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 I';我在一个卖不同艺术品的网站上工作,什么';处理不同图像大小的最佳方法是什么?_Php_Gd_Thumbnails_Image Resizing - Fatal编程技术网

Php I';我在一个卖不同艺术品的网站上工作,什么';处理不同图像大小的最佳方法是什么?

Php I';我在一个卖不同艺术品的网站上工作,什么';处理不同图像大小的最佳方法是什么?,php,gd,thumbnails,image-resizing,Php,Gd,Thumbnails,Image Resizing,我正在开发一个网站,允许用户上传和出售不同尺寸的艺术品。我想知道自动处理不同文件大小的最佳方法是什么。有几点我很好奇: 如何定义不同大小的类别(小、中、大),这样我就能够以比例尺寸动态地重新调整图像大小 我应该存储不同大小的实际JPEG以供下载吗?还是更容易生成这些不同大小的文件以便动态下载 我的缩略图会比你的平均缩略图稍大一些,我是否应该存储第二个“缩略图图像”并覆盖网站水印?或者再一次,在运行中生成这个 非常感谢所有意见、建议 您可以查看php缩略图。下面是一段可能有用的代码片段 <

我正在开发一个网站,允许用户上传和出售不同尺寸的艺术品。我想知道自动处理不同文件大小的最佳方法是什么。有几点我很好奇:

  • 如何定义不同大小的类别(小、中、大),这样我就能够以比例尺寸动态地重新调整图像大小

  • 我应该存储不同大小的实际JPEG以供下载吗?还是更容易生成这些不同大小的文件以便动态下载

  • 我的缩略图会比你的平均缩略图稍大一些,我是否应该存储第二个“缩略图图像”并覆盖网站水印?或者再一次,在运行中生成这个


非常感谢所有意见、建议

您可以查看php缩略图。下面是一段可能有用的代码片段

<?php
# Constants
define(IMAGE_BASE, '/var/www/html/mbailey/images');
define(MAX_WIDTH, 150);
define(MAX_HEIGHT, 150);

# Get image location
$image_file = str_replace('..', '', $_SERVER['QUERY_STRING']);
$image_path = IMAGE_BASE . "/$image_file";

# Load image
$img = null;
$ext = strtolower(end(explode('.', $image_path)));
if ($ext == 'jpg' || $ext == 'jpeg') {
    $img = @imagecreatefromjpeg($image_path);
} else if ($ext == 'png') {
    $img = @imagecreatefrompng($image_path);
# Only if your version of GD includes GIF support
} else if ($ext == 'gif') {
    $img = @imagecreatefrompng($image_path);
}

# If an image was successfully loaded, test the image for size
if ($img) {

    # Get image size and scale ratio
    $width = imagesx($img);
    $height = imagesy($img);
    $scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height);

    # If the image is larger than the max shrink it
    if ($scale &lt; 1) {
        $new_width = floor($scale*$width);
        $new_height = floor($scale*$height);

        # Create a new temporary image
        $tmp_img = imagecreatetruecolor($new_width, $new_height);

        # Copy and resize old image into new image
        imagecopyresized($tmp_img, $img, 0, 0, 0, 0,
                         $new_width, $new_height, $width, $height);
        imagedestroy($img);
        $img = $tmp_img;
    }
}

# Create error image if necessary
if (!$img) {
    $img = imagecreate(MAX_WIDTH, MAX_HEIGHT);
    imagecolorallocate($img,0,0,0);
    $c = imagecolorallocate($img,70,70,70);
    imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2);
    imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2);
}

# Display the image
header("Content-type: image/jpeg");
imagejpeg($img);
?>

我用电脑做类似的事情

在那里,一些图像在第一次被请求时被动态调整大小,然后被存储;而其他则是在上传时生成的。倾向于分组请求的图像(即缩略图)在上载时生成,倾向于一次显示一个的图像会动态生成。这对我来说很有效,但这是一个没有太多流量的网站

我在使用Python和Django,所以我使用了sorl缩略图。在PHP中,您可以访问各种imagecreatefrom*函数,这些函数做(某种程度上)相同的事情


我生成带有水印的照片版本(如果某个相册应该带有水印),并存储这些照片,而不是未加水印的副本。

这是否保持了宽度/高度的比例。。。我的意思是,如果在一个语句中设置了max_height和max_width,这意味着我必须提前知道尺寸,以防止图像失真,对吗?应该。。最大高度和最大宽度用于缩放/调整大小的图像。