我正在销售不同艺术品的网站上工作,处理不同图像尺寸的最佳方法是什么?

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

  • 如何界定不同尺寸类别(小,中,大)以这样的方式,我将能够动态调整大小的图像与比例的尺寸。

  • 我应该存储不同大小的实际jpegs进行下载吗?还是会更容易在运行中生成下载这些不同尺寸

  • 我的缩略图会比一般的缩略图略大一些,我应该存储第二“缩略图”与站点水印重叠呢?或者再一次,即时生成这个?

所有意见,建议非常感谢!

回答:

我做这样的事情与aarongriffin.co.uk。

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

我正在Python和Django工作,所以我使用sorl-thumbnail来做这件事。在PHP中,你可以访问不同的imagecreatefrom *函数,这些函数可以完成同样的事情。

我生成的照片的水印版本(如果一个特定的相册应该加水印),并存储这些,而不是无水印的副本。

回答:

你可以检查这个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);

?>

以上是 我正在销售不同艺术品的网站上工作,处理不同图像尺寸的最佳方法是什么? 的全部内容, 来源链接: utcz.com/qa/266665.html

回到顶部