2016-12-11 1 views
0

配列にプッシュする前にデータベースから各画像のサイズを変更しようとしています。配列には元の画像が大きすぎて読み込みに時間がかかりすぎるため、サイズ変更イメージがグリッドビューに表示されるイメージパス(URL)が含まれています。私は論理を解明していて、まだ解決できませんでした。誰も私にこれを手伝ってもらえますか?私のデータベースには、「写真」と「場所」の列が含まれています。Imagick PHP(データベースから各画像のサイズを変更する方法)

getphoto.php

<?php 

require_once('dbConnect.php'); 

$sql = "select * from volleyupload1"; 
$res = mysqli_query($con, $sql); 

$result = array(); 

while ($row = mysqli_fetch_array($res)) { 
    foreach ($result as $row['photo']) { 
     $imagick = new Imagick($row['photo']); 
     $imagick->thumbnailImage(300, 300, true, true); 
     header("Content-Type: image/jpg"); 
// echo $imagick; 
    } 
    array_push($result, array('url' => $row['photo'], 'location' => $row['location'])); 
//  $test = $row['photo']; 
// foreach ($result as $row['photo']){ 
//  $imagick = new Imagick($row['photo']); 
// $imagick->thumbnailImage(300, 300, true, true); 
// header("Content-Type: image/jpg"); 
//  echo $imagick; 
// 
//  } 
} 


echo json_encode(array("result" => $result)); 

mysqli_close($con); 

答えて

0

私は '写真' と '場所' の違いを得ることはありません。ブラウザには、ローカルファイルパスではなくURLのみを送信する必要があります。

とにかく、サムネイルイメージを新しいファイルに保存し、元のファイルではなくこのファイルにURLを返す必要があります。

は、次のようになります。ローカルファイルパスにする必要がありthumb_path

while ($row = mysqli_fetch_array($res)) { 
    $imagick = new Imagick($row['photo']); 
    $imagick->thumbnailImage(300, 300, true, true); 

    $thumb_path = $row['photo'] . '.thumb.jpg'; 
    $thumb = fopen($thumb_path, 'w'); //open new filehandle to write the thumb 
    $imagick->writeImageFile($thumb); 
    fclose($thumb); 

    array_push($result, array('url' => $thumb_path, 'location' => $row['location'])); 

} 

$を。ブラウザには、インターネットから到達可能なURLを送信する必要があります。

+0

「写真」にはURLが含まれていますが、「場所」は単なる場所の名前です。配列のすべてのURLを表示できるので、URLから画像のサイズを変更しようとしていたためです。私は上記のコードを試して、私はいくつかのエラーを受けた。 – arsenallavigne

+0

少なくとも、使用されているパスの値を調整する必要があります。それを少しデバッグし、あなたが再び立ち往生する有用なエラーを投稿してください – Iarwa1n

関連する問題