2

我想更改以下 php 代码,以便一次调整大小并显示图像,并带有“下一个”和“上一个”按钮,以便浏览照片。我不想要任何图片库或灯箱解决方案,而只是在页面上显示照片。我是 php 新手,所以如果有人可以帮助或指出我正确的方向,所有帮助都将不胜感激。

$sql = "select * from people";
$result = mysql_query($sql) or die ("Could not access DB: " .  mysql_error());
while ($row = mysql_fetch_assoc($result))
{
    echo "<div class=\"picture\">";
    echo "<p>";

// Note that we are building our src string using the filename from the database
    echo "<img src=\"images/" . $row['filename'] . "\" alt=\"\" /><br />";
    echo $row['fname'] . " " . $row['lname'] . "<br />";
    echo "</p>";
    echo "</div>";

上述代码的来源

4

2 回答 2

1

width你可以在浏览器中使用和属性来缩放它们height(或者只使用一个属性来保持纵横比),但这有很多原因,包括带宽、页面性能和图像质量。

您可以使用诸如GD或之类的库重新调整图像大小Imagick

一个快速示例IMagick

$hThumb = new Imagick($path_to_file); // Source file
$hThumb->thumbnailImage($x, $y); // You can use 300, 0 to do 300 width and maintain aspect ratio.
$hThumb->stripImage();  // remove meta data
$hThumb->writeImage($path_to_thumb); // write the image to disk

笔记

确保具有读/写权限。您可以使用is_readable和来验证此权限is_writable

正在加载

建议使用加载图像,如果使用或类似的库AJAX非常容易。JQuery

$('#nextBtn').click(function() {
    var index = 0; // Store this in your image ID tag perhaps
                   // e.g. $('#theImage').attr('id').replace('image', '')
                   // where ID is imageX
    $.ajax({
       url: 'getImages.php?index=' + index,
       type: "GET",
       success: function(data) {
           var result = $.parseJSON(data);
           if (result.success) {
              // Set your image src with the new path. 
              // Use result.image_data.src etc...
           }
       }
    });
});

PHP 也相对简单,结构类似于:

 <?php
    $return = array('success' => false, 'image_data' => array());
    if (isset($_GET['index']) && is_numeric($_GET['index')) {
       // Fetch your image
       $return = array(
           'success' => true,
           'image_data' => array(
              'src' => $src, 
              'title' => $title,
              'index' => $index
           )
        );

    }

    echo json_encode($return);
 ?>

** 另一个注意事项 **

正如 kgb 所述,您应该在上传时调整它们的大小,但是,它们可能不是用户提交的,因此您还可以检查输出中是否存在拇指并根据需要生成任何拇指。当然,不要为每个视图生成它们。

于 2012-07-15T21:59:25.657 回答
1

您应该在上传时调整图像大小,而不是在输出时。存储原始图像和调整大小的图像,在列表中显示小图像,并在用户需要时显示全尺寸...

imagecopyresampled () 文档中的示例代码:

// Get new dimensions
list($width, $height) = getimagesize($filename);
$widthNew = 320; // You decide
$heightNew = 240; // You decide

// Resample
$imageNew = imagecreatetruecolor($widthNew, $heightNew);
$imageOld = imagecreatefromjpeg($filename);
imagecopyresampled($imageNew, $imageOld, 0, 0, 0, 0, $widthNew, $heightNew, $width, $height);

// Output
imagejpeg($imageNew, $newFilename, 100);

此示例期望 gd 扩展名包含在 php.ini 中。Martin 提到的 Imagick 扩展更强大,提供更好的界面,但很少包含在虚拟主机中。

还为您搜索了这个:http ://www.9lessons.info/2009/03/upload-and-resize-image-with-php.html

于 2012-07-15T22:02:00.483 回答