2013-07-12 51 views
0

我想創建簡單的縮略圖生成。我基於Stack Overflow的另一個問題,但爲我的需要簡化了代碼。它應該拍攝一張照片,然後根據身高收縮它。縮略圖生成不會輸出任何東西

function create_thumbnail($original_pic, $intended_heigth){ 
$info = getimagesize($original_pic); 
$actual_width = $info[0]; 
$actual_height = $info[1]; 

if($info['mime'] == 'image\jpeg'){ 
    $src = imagecreatefromjpeg($original_pic); 
}else{ 
    return false; 
} 

$ratio = $intended_heigth/$actual_height; 
$newheight = $intended_heigth; 
$newwidth = $actual_width * $ratio; 
$writex = 0; 
$writey = 0; 

$thumbnail = imagecreatetruecolor($newwidth, $newheight); 
imagecopyresized($thumbnail, $src, $writex, $writey, 0, 0, $newwidth, $newheight, $actual_width, $actual_height); 
return imagejpeg($thumbnail); 
} 

然後我試圖呼應ID這樣

<?php $original_pic = "images/info/7/01.jpg"; ?> 
<img src="<?php create_thumbnail($original_pic, 90); ?>"> 

這什麼也不做。 但是在原來的代碼中,有這樣定義的$ writex $ writex = round(($ mintednded_width - $ newwidth)/ 2); 但我真的不明白這是甚麼。 任何想法?

+0

請問您可以發佈一個鏈接到原來的問題? – Harshad

+0

http://stackoverflow.com/questions/4590441/php-thumbnail-image-resizing-with-proportions – rancor1223

+0

你可以在JS中使用它.. –

回答

1

create_thumbnail功能具有以下return語句

return imagejpeg($thumbnail); 

如果你讀了documentation for imagejpeg功能,你會看到它返回一個布爾值 - 圖像是否被成功與否創建。

然後您使用返回bool價值爲您<img>

<img src="<?php create_thumbnail($original_pic, 90); ?>"> 

你想要做的是返回到所生成的縮略圖保存路徑。閱讀文檔,注意imagejpeg函數的第二個參數,並使用它返回保存的縮略圖的路徑。

祝您好運

+0

完全錯過了。謝謝! – rancor1223

0

您錯誤地使用此功能。

此功能縮略圖並返回小圖像。您可以將此圖像存儲爲文件,然後在代碼中使用此新圖像的鏈接。

你應該改變你的代碼的邏輯。

0
create image.php write bellow code 
<?php 
header('Content-Type: image/jpeg'); 

function create_thumbnail($original_pic, $intended_heigth) { 
    $info = getimagesize($original_pic); 
    $actual_width = $info[0]; 
    $actual_height = $info[1]; 

    if ($info['mime'] === 'image/jpeg') { 
     $src = imagecreatefromjpeg($original_pic); 
    } else { 
     return false; 
    } 

    $ratio = $intended_heigth/$actual_height; 
    $newheight = $intended_heigth; 
    $newwidth = $actual_width * $ratio; 
    $writex = 0; 
    $writey = 0; 

    $thumbnail = imagecreatetruecolor($newwidth, $newheight); 
    imagecopyresized($thumbnail, $src, $writex, $writey, 0, 0, $newwidth, $newheight, $actual_width, $actual_height); 
    return imagejpeg($thumbnail); 
} 
?> 
<?php $original_pic = "images/info/7/".$_GET['img']; ?> 
<?php create_thumbnail($original_pic, 90); ?> 

Now you can call image with other file 
<img src="image.php?img=01.jpg"> 
+0

這很好,但它不會在我的網站上工作,因爲這些thubnails是JS畫廊的一部分,因此傳遞這樣的數據是不可能的。但無論如何,這是無法挽回的。謝謝。 – rancor1223