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 < 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,这意味着我必须提前知道尺寸,以防止图像失真,对吗?应该。。最大高度和最大宽度用于缩放/调整大小的图像。