我正在尝试使用此课程:http://www.verot.net/php_class_upload_samples.htm
如果有人熟悉调整大小和填充图像的其余部分,请帮助我。
我的想法是,如果您上传600x600的图片,我想保存两张图片:1-600x600和1-300x300。到目前为止,它运作良好。但是,如果用户选择上传大小为749x1202的图片,我希望脚本能够在300x300和600x600中看起来很好用,其中无用空间用白色填充,因此图像仍然是600x600。对于较小的图像也应该发生相同的情况,例如249x400。
到目前为止,这是我的代码:
// Set the upload directory
$uploadDir = '../../htdocs/public/product_images/'.$id.'/';
$thumbDir = '../../htdocs/public/product_images/'.$id.'/thumbs/';
@mkdir($uploadDir, 0755, true);
@mkdir($thumbDir, 0755, true);
// Store the file content in a variable
$file = file_get_contents('php://input');
// Save the file to the server
file_put_contents($uploadDir . $filename, $file);
$targetFile = str_replace('//','/',$uploadDir) . $filename;
$targetThumb = str_replace('//','/',$thumbDir) . $filename;
copy ($targetFile,$targetThumb);
$image = new upload($targetFile);
if ($image->uploaded) {
$image->image_resize = true;
$image->image_ratio_fill = true;
$image->image_x = 600;
$image->image_y = 600;
$image->file_overwrite = true;
$image->process($uploadDir);
}
$image = new upload($targetThumb);
if ($image->uploaded) {
$image->image_resize = true;
$image->image_ratio_fill = true;
$image->image_x = 300;
$image->image_y = 300;
$image->file_overwrite = true;
$image->process($thumbDir);
}
我可以用另一种方式做这件事,但如果有人能指点我,我将非常感激。
答案 0 :(得分:0)
您可以做的是在保持纵横比的情况下缩放图像,因此至少有一个尺寸符合您的要求(即您获得128x300)然后创建空图像(画布)并合并这两个图像在画布上居中。但我只是将这个128x300像素图像写在磁盘上并在HTML / CSS中强制执行300x300像素的容器大小 - 这更好,因为你的文件更小,你可以通过改变你的CSS轻松改变画布的bg颜色 - 以前的技术,如果bg不透明就不会那么容易(如果是,那么为什么不使用HTML呢?)