PHP-php 优质制作缩略图

发布于 2017-01-22 23:45:45 字数 50 浏览 1220 评论 5

php制作缩略图,上传头像,不能裁剪,如果传的图的长宽比例不好,图片会变形,要怎么解决

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

甜柠檬 2017-09-28 19:25:43

缩略图的比例和长宽是否是固定的?
从描述上来看,应该是上传的图片比例与缩略图的比例不符,导致变形吧。
想要缩略图不变形,却又不能裁剪;那就只能加黑边之类的了。如果条件允许,也可以让图像以原比例显示,就不会变形了。

偏爱自由 2017-09-21 17:20:58

一般来说可以从中心位置剪切,不会对原图有太大的破坏性影响,可以参考我的项目EvaCloudImage中的图片剪切一节

晚风撩人 2017-09-02 15:11:45

最近我也在做这个快的东西,图片质量只要缩略过就总会有一些失真,搞了很久也没搞定。据说有其他的专门处理图片的库,要新安装所以就没倒腾了。注意在createjpg的时候一定能够要把质量调成100哦,默认是75的,不过100还是会失真有点,php内置的还不够完美啊,呵呵

浮生未歇 2017-05-11 10:31:55

如果不能裁剪的话,又想提高缩略图质量的确有些麻烦。添加黑边的话,也对用户体验影响不好。
建议在制作缩略图的时候,所设置的宽高尽量用程序控制下,在设置固定值的时候使图像尽量保持原始的纵横比例。
可以的话建议还是使用裁剪,你用flash插件或者jquery都是可以实现用户自定义裁切的。

夜无邪 2017-04-29 07:34:49

使用GD库生成。

<?

$FILENAME="image_name";

// 生成图片的宽度
$RESIZEWIDTH=400;

// 生成图片的高度
$RESIZEHEIGHT=400;

function ResizeImage($im,$maxwidth,$maxheight,$name){
$width = imagesx($im);
$height = imagesy($im);
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
if($maxwidth && $width > $maxwidth){
$widthratio = $maxwidth/$width;
$RESIZEWIDTH=true;
}
if($maxheight && $height > $maxheight){
$heightratio = $maxheight/$height;
$RESIZEHEIGHT=true;
}
if($RESIZEWIDTH && $RESIZEHEIGHT){
if($widthratio < $heightratio){
$ratio = $widthratio;
}else{
$ratio = $heightratio;
}
}elseif($RESIZEWIDTH){
$ratio = $widthratio;
}elseif($RESIZEHEIGHT){
$ratio = $heightratio;
}
$newwidth = $width * $ratio;
$newheight = $height * $ratio;
if(function_exists("imagecopyresampled")){
$newim = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
}else{
$newim = imagecreate($newwidth, $newheight);
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
}
ImageJpeg ($newim,$name . ".jpg");
ImageDestroy ($newim);
}else{
ImageJpeg ($im,$name . ".jpg");
}
}

if($_FILES['image']['size']){
if($_FILES['image']['type'] == "image/pjpeg"){
$im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
}elseif($_FILES['image']['type'] == "image/x-png"){
$im = imagecreatefrompng($_FILES['image']['tmp_name']);
}elseif($_FILES['image']['type'] == "image/gif"){
$im = imagecreatefromgif($_FILES['image']['tmp_name']);
}
if($im){
if(file_exists("$FILENAME.jpg")){
unlink("$FILENAME.jpg");
}
ResizeImage($im,$RESIZEWIDTH,$RESIZEHEIGHT,$FILENAME);
ImageDestroy ($im);
}
}

?>

<img src="<? echo($FILENAME.".jpg?reload=".rand(0,999999)); ?>"><br/><br/>

<form enctype="multipart/form-data" method="post">
<br/>
<input type="file" name="image" size="50" value="浏览"><p>
<input type="submit" value="上传图片">
</form>

</body>
</html>

http://blog.s135.com/post/47/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文