使用带有php的image magick在从数据库中提取时调整图像大小

时间:2013-09-24 10:12:29

标签: php mysql image-processing imagemagick

在php中,我使用php move_uploaded_file函数将图像上传到数据库。现在当我从数据库中获取图像时,我正在使用此代码来获取图像

$result = mysql_query("SELECT * FROM "._DB_PREFIX_."storeimages WHERE `city_name`='".$_GET['details']."'");
while($row = mysql_fetch_array($result)){
 echo '<div class="store-img">';
  echo '<img class="store-image" src="storeimages/images/'.$row['store_image'].'" width="100px" height="100px" >';
  echo '</div>';
  }

这里我很容易得到图像。但是在这里您可以看到我使用了width="100px"height="100px"来表示图片大小。这会扰乱图像宽高比。为了解决这个问题,我搜索了谷歌,我得到imagemagick是一个很好的选择。但我不知道如何使用imagemagick与简单的PHP(我没有使用任何类,方法)和我怎么能在这里使用imagemagick?任何帮助和建议都会非常明显。感谢

4 个答案:

答案 0 :(得分:1)

以下是如何保持图像比率

list($origWidth, $origHeight) = @getimagesize("path/to/image");

$origRatio = $origWidth/$origHeight;
$resultWidth = 100;
$resultHeight = 100;
if ( $resultWidth/$resultHeight > $origRatio ) {
    $resultWidth = $resultHeight * $origRatio;
} else {
    $resultHeight = $resultWidth / $origRatio;
}

答案 1 :(得分:0)

尝试Sencha .io。非常容易和强大

echo '<img
  src="http://src.sencha.io/100/http://yourdomain.com/storeimages/images/'.$row['store_image'].'"
  alt="My constrained image"
  width="100"
  height="100"
/>';

更多信息:http://www.sencha.com/learn/how-to-use-src-sencha-io/

答案 2 :(得分:0)

imagemagick是一个可以操作图像的linux实用程序

要使用,您必须在服务器上安装它

只需输入以下命令

即可
<?
 print_r(exec("which convert"));
?>

如果它返回了某些内容,则表示已安装

现在使用以下命令调整图像大小

<?php

exec("/<linux path of this utility>/convert  /<actual path of image>/a.png  -resize 200x200  /<path where image to be saved>/a200x200.png")


?>

答案 3 :(得分:0)

  1. 在PHP中使用HTML,从PHP中删除HTML
  2. 不是一个好习惯
  3. 安装php imagick

    sudo apt-get install imagemagick
    sudo apt-get install php5-imagick
    
  4. 调整照片大小时,最好保持宽高比 这张照片。以下代码应该更好地了解如何 计算纵横比

    if( $imageWidth > $maxWidth OR $imageHeight > $maxHeight )
    {
       $widthRatio = 0;
       $heightRatio = 0;
    
       if( $imageWidth > 0 )
       {
           $widthRatio = $maxWidth/$imageWidth;
       }
    
       if( $imageHeight > 0 )
       {
           $heightRatio = $maxHeight/$imageHeight;
       }
    
       if( $widthRatio > $heightRatio )
       {
           $resizeRatio = $heightRatio;
       }
       else
       {
           $resizeRatio = $widthRatio;
       }
    
       $newWidth = intval( $imageWidth * $resizeRatio );
    
       $newHeight = intval( $imageHeight * $resizeRatio );
    
     }
    
  5. 有关如何使用Imagick的信息,请参阅http://php.net/manual/en/book.imagick.php。您可以参考以下示例代码

     $image = new Imagick($pathToImage);
     $image->thumbnailImage($newWidth, $newHeight);
     $image->writeImage($pathToNewImage);