0

シナリオ: 以前、画像の URL を直接読み取って、画像のサイズを 4 つの異なるサイズに変更しました。しかし、実行タイムアウトがありました。ここで、URL を読み取って一時フォルダーにコピーし、ローカルの一時フォルダー内の画像を imagecreatefromjpeg() に渡します。

protected static function saveImage($row,$url){
    $percent = 1.0; 
    $imagethumbsize = 200;
    $db = PJFactory::getDbo();
    $details = $db->getImageDetails();
    $max = sizeof($details);
    $tempfilename = "C:".DS."xampp".DS."htdocs".DS."opg-uat".DS."img".DS."temp".DS.$row['CategoryID'].".jpg"; 
    $tempcopy = copy($url,$tempfilename);
   foreach ($details as $array) {
    $new_width=$array[2];
    $new_height=$array[3];
    $newfilename = "C:".DS."xampp".DS."htdocs".DS."opg-uat".DS."img".DS."c".DS.$row['CategoryID']."-".$array[1].".jpg"; 
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($tempfilename);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagejpeg($image_p, $newfilename);
 }
 }

エラー: 画像は一時フォルダに正しく保存されています。しかし、宛先フォルダーにはすべてのサイズの画像が作成されますが、画像は黒にしか見えません。(実際の画像は取得していません) . local からのファイルの読み取りに問題があると思います。何か案が ?

前もって感謝します。

4

2 に答える 2

0

ファイル以外のJPGファイルを読み取ろうとすると、黒い画像のみが返されます。したがって、画像を読み取っているときに、ファイルが実際にどのファイルタイプであるかを確認してから、3 つ ( jpegpnggif) の間で正しい関数を呼び出します。

于 2013-09-30T07:35:00.657 に答える
0

あなたはどこにでも設定$width$heightますか?

$width = imagesx($image);
$height= imagesy($image);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
于 2013-09-30T07:57:54.927 に答える