我非常感谢对这个问题的任何帮助。我有一个基于joomla的网站并使用第三方扩展程序,我试图让访问者上传包括照片在内的信息。但是,我需要实现一些PHP代码来调整图像之前上传到服务器以减少上传时间和上传失败。 该网站的开发人员已经放置了“调整大小”,但这只会在到达服务器后调整图像大小。
// Resize Params Hack
$OriginalfileWidth = getimagesize($file);
$NewFileWidth = 400; // Set here the new desired width
if ($OriginalfileWidth[0] > $NewFileWidth) {
$this->resize($NewFileWidth, $file, $ext);
}
}
}
}
protected function resize($newWidth, $targetFile, $ext) {
$targetFile = JPATH_ROOT . '/' . $targetFile;
if (empty($newWidth) || empty($targetFile)) {
return false;
}
switch ($ext) {
case 'jpg':
$src = imagecreatefromjpeg($targetFile);
break;
case 'gif':
$src = ImageCreateFromGif($targetFile);
break;
case 'png':
$src = ImageCreateFrompng($targetFile);
break;
}
list($width, $height) = getimagesize($targetFile);
$newHeight = ($height / $width) * $newWidth;
$tmp = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
if (file_exists($targetFile)) {
unlink($targetFile);
}
switch ($ext) {
case 'jpg':
imagejpeg($tmp, $targetFile, 85); // 85 is my choice, make it between 0 – 100 for output image quality with 100 being the most luxurious
break;
case 'gif':
imagegif($tmp, $targetFile);
break;
case 'png':
imagepng($tmp, $targetFile, 8);
break;
}
}
}
我注意到有关搜索stackoverflow的代码,但我根本不知道如何输入它。 非常感谢您的帮助。 马修
答案 0 :(得分:0)
使用swfupload:
http://code.google.com/p/swfupload/
关于如何调整大小的演示:
http://demo.swfupload.org/v250beta3/resizedemo/index.php
在使用闪光灯上传图像之前,先调整图像大小。
答案 1 :(得分:0)
如果要在上载到服务器之前调整图像大小,则必须使用画布。我正在使用以下代码。我会为您提供帮助。
HTML
<input id="imageFile" type="file"><input type="button" value="Resize Image" onclick="ResizeImage()"/>
<img src="" id="image_output">
JavaScript
function ResizeImage() {
var filesToUpload = document.getElementById('imageFile').files;
var file = filesToUpload[0];
// Create an image
var img = document.createElement("img");
// Create a file reader
var reader = new FileReader();
// Set the image once loaded into file reader
reader.onload = function(e) {
img.src = e.target.result;
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var MAX_WIDTH = 400;
var MAX_HEIGHT = 400;
var width = img.width;
var height = img.height;
if (width > height) {
if (width > MAX_WIDTH) {
height *= MAX_WIDTH / width;
width = MAX_WIDTH;
}
} else {
if (height > MAX_HEIGHT) {
width *= MAX_HEIGHT / height;
height = MAX_HEIGHT;
}
}
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
var dataurl = canvas.toDataURL("image/png");
document.getElementById('image_output').src = dataurl;
}
reader.readAsDataURL(file);
}