【问题标题】:php content-type image sizephp 内容类型图片大小
【发布时间】:2012-06-16 07:12:08
【问题描述】:

我有这段代码来显示用户头像..

<?php
include("../core/config.php");

if(isset($_GET['uid'])){
if(is_numeric($_GET['uid'])){
    $uid = $_GET['uid'];
}
else{
    exit();
}

$sql="SELECT avatar FROM users_avatar WHERE user_id = '$uid'";  
$row= getRow($sql);
if(!$row){
    $url = "../usravatars/_default/usravatar_default_m.png";
}
else{
$avatar = $row['avatar'];
$url = "../usravatars/$uid/$avatar";
}   
header("Content-Type: image/jpg");
readfile($url);
}
?>

是否可以为正在显示的图像设置自定义尺寸?

【问题讨论】:

  • 您的意思是动态调整图像大小还是使用 HTML 强制图像大小?
  • 我的意思是在这段代码中调整它的大小。我想要另一个 $_GET 变量,比如$_GET['size'],在我的 url 中设置为 64 或 32,然后调整图像的宽度和高度为 64 或32.. 基础图片为 128x128px。编辑:通过调整大小,我并不是要创建该图像的副本.. 就像你说的那样强制它的大小,但如果可能的话,在这段代码中。
  • @DjRikyx 为此,您可以使用 GDIMagick
  • 我通过使用 GD 和我找到的 php 类解决了这个问题。谢谢大家。

标签: php image content-type


【解决方案1】:

以下是动态调整图像大小的示例函数。您可以使用自己的特定宽度/高度或从 get 变量中获取。

function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource.
//getting the image dimensions  
list($width_orig, $height_orig) = getimagesize($imgSrc);   
$myImage = imagecreatefromjpeg($imgSrc);
$ratio_orig = $width_orig/$height_orig;

if ($thumbnail_width/$thumbnail_height > $ratio_orig) {
   $new_height = $thumbnail_width/$ratio_orig;
   $new_width = $thumbnail_width;
} else {
   $new_width = $thumbnail_height*$ratio_orig;
   $new_height = $thumbnail_height;
}

$x_mid = $new_width/2;  //horizontal middle
$y_mid = $new_height/2; //vertical middle

$process = imagecreatetruecolor(round($new_width), round($new_height)); 

imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
$thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height); 
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height);

imagedestroy($process);
imagedestroy($myImage);
return $thumb;
}

//Create the thumbnail
$newThumb = CroppedThumbnail("DSC01088.jpg",$_GET['width'],$_GET['height']);

// And display the image...
header('Content-type: image/jpeg');
imagejpeg($newThumb);

【讨论】:

    【解决方案2】:

    使用header("Content-Type: image/jpg"); readfile($url);,您将具有原始大小的完整图像发送到浏览器,仅此而已。

    如果您想显示同一图像的调整大小版本,请尝试类似

    echo '<img src="' . $url . '" width="desired-width" />';
    

    如果您想调整原始图像的大小,请查看此页面上的第一个示例http://php.net/manual/en/function.imagecopyresampled.php

    【讨论】:

    • 我现在试过了,如果我直接看到 php 文件就可以了。但我使用这个脚本作为background-image url..
    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多