我试图将图片上传到图像上传的位置,它会将图像压缩到比现在更小的尺寸或类似的尺寸。我有一个管理员可以将图像或图像上传到主页面滑块的地方,但是我想让它在图像的较小尺寸而不是完整的1.1mb图像或者什么不。关于我目前如何使用我的代码执行此操作的任何想法?
继承我的滑块代码,它获取图像来自我的数据库的链接:
<div class="tp-banner-container rev_slider_wrapper fullwidthbanner-container"
data-alias="news-hero72">
<div class="tp-banner-slider">
<ul>
<?php
$stmt = $DB_con->prepare('SELECT * FROM slider');
$stmt->execute();
if($stmt->rowCount() > 0)
{
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
extract($row);
?>
<li data-index="rs-80" data-transition="fade" data-slotamount="7" data-masterspeed="500"
data-saveperformance="on"
data-title="Intro Slide">
<img src="images/slider/<?php echo $row['link']; ?>" alt="slidebg1"
data-bgposition="center top" data-bgfit="cover"
data-bgrepeat="no-repeat">
<div class="revolution_heading_font tp-caption grey_heavy_72 skewfromrightshort tp-resizeme rs-parallaxlevel-2" data-x="0"
data-y="200" data-speed="700" data-start="10" data-easing="Power3.easeInOut" data-splitin="chars"
data-splitout="none" data-elementdelay="0.1" data-endelementdelay="0.1"
style="z-index: 5; max-width: inherit; max-height: inherit; white-space: nowrap;color: #FFFFFF;font-size:30pt;font-family: Montserrat">
<?php echo $row['slide_name']; ?>
</div>
<div class="revolution_font tp-caption grey_heavy_72 skewfromrightshort tp-resizeme rs-parallaxlevel-2" data-x="5"
data-y="300" data-speed="300" data-start="600" data-easing="Power3.easeInOut" data-splitin="words"
data-splitout="none" data-elementdelay="0.1" data-endelementdelay="0.1"
style="z-index: 5; max-width: inherit; max-height: inherit; white-space: nowrap;color: #ffffff;font-weight: 300;font-size:18pt; line-height: 30pt; margin-left:8px">
<?php echo $row['slide_desc'];?>
</div>
<?php
}
}
else
{
?>
<?php
}
?>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
这是我的PHP其中管理员可以编辑滑块名称,描述和上传滑块图像。
<?php
if(isset($_GET['edit_id']) && !empty($_GET['edit_id']))
{
$id = $_GET['edit_id'];
$stmt_edit = $DB_con->prepare('SELECT * FROM sponsors WHERE id =:uid');
$stmt_edit->execute(array(':uid'=>$id));
$edit_row = $stmt_edit->fetch(PDO::FETCH_ASSOC);
extract($edit_row);
}
else
{
header("Location: ../../login.php");
}
if(isset($_POST['btn_save_updates']))
{
$username = $_POST['user_name'];
$description = $_POST['description'];
$imgFile = $_FILES['user_image']['name'];
$tmp_dir = $_FILES['user_image']['tmp_name'];
$imgSize = $_FILES['user_image']['size'];
if($imgFile)
{
$upload_dir = '../images/sponsors/';
$imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION));
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif');
$userprofile = rand(1000,1000000).".".$imgExt;
if(in_array($imgExt, $valid_extensions))
{
if($imgSize < 5000000)
{
unlink($upload_dir.$edit_row['logo']);
move_uploaded_file($tmp_dir,$upload_dir.$userprofile);
}
else
{
$errMSG = "Sorry, Your File Is Too Large To Upload. It Should Be Less Than 5MB.";
}
}
else
{
$errMSG = "Sorry, only JPG, JPEG, PNG & GIF Extension Files Are Allowed.";
}
}
else
{
$userprofile = $edit_row['logo'];
}
if(!isset($errMSG))
{
$sponsorname = $_POST['sponsor_name'];
$motto = $_POST['sponsor_motto'];
$phone = $_POST['sponsor_phone'];
$website = $_POST['sponsor_website'];
$son = $_POST['sponsor_on'];
$stmt = $DB_con->prepare('UPDATE sponsors SET name=:sname, motto=:smotto, phone=:sphone,website=:swebsite,live=:son, logo=:upic WHERE id=:uid');
$stmt->bindParam(':sname',$sponsorname);
$stmt->bindParam(':smotto',$motto);
$stmt->bindParam(':sphone',$phone);
$stmt->bindParam(':swebsite',$website);
$stmt->bindParam(':son',$son);
$stmt->bindParam(':upic',$userprofile);
$stmt->bindParam(':uid',$id);
if($stmt->execute()){
?>
<script>
alert('Successfully Updated...');
window.location.href='managesponsors.php?action=sponsorupdated';
</script>
<?php
}
else{
$errMSG = "Sorry User Could Not Be Updated!";
}
}
}
?>
答案 0 :(得分:2)
如果您想要的是压缩上传的图像文件,那么直接的方法是使用php函数imagejpeg()并编辑您的上传代码 从这个:
move_uploaded_file($tmp_dir,$upload_dir.$userprofile);
到此:
if (move_uploaded_file($tmp_dir,$upload_dir.$userprofile)) {
$image = imagecreatefromjpeg($upload_dir.$userprofile);
imagejpeg($image,$upload_dir.$userprofile,75); //75 is quality of the compression (can be anywhere lower than 100)
}
现在您的图片应该是原始尺寸的75%,请注意这只适用于jpeg图片,您需要将 imagecreatefromjpeg 替换为 imagecreatefromgif 和 imagecreatefrompng 取决于上传的图像格式
答案 1 :(得分:1)
您可以使用GD或Imagick来完成此操作,如下所示
$thumb = new Imagick('myimage.gif');
$thumb->resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
$thumb->writeImage('mythumb.gif');
$thumb->destroy();
或者您将获得大量的PHP库,这将有助于您的工作。
答案 2 :(得分:0)
您应该尝试https://piio.co使用此工具,您不需要自己转换图像,工具将在您基于客户端设备将图像提供给客户端之前为您完成。
集成非常简单,您只需将<img src="image.jpg" />
更改为<img data-piio="image.jpg />
并在HTML中包含JS库。你不需要运行一个cron-job或任何东西来调整和压缩你的图像,Piio会自动为你做这件事。