ここhttp://www.white-hat-web-design.co.uk/articles/php-image-resizing.phpから、ユーザーから送信された画像のサイズを変更するためのコードを入手しました。
送信された画像の処理方法は次のとおりです。
include('image_resize.php');
$image = new SimpleImage();
$image->load($upload_dir.$filename);
$image->resizeToWidth(190);
$image->save($upload_dir.$filename);
ここにの一部がありimage_resize.php
ます:
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
すべてのコードを貼り付けるつもりはありません。ここまではすべてが正常に機能しているからです。
携帯電話のカメラから直接写真をアップロードするときに向きの問題が発生しているので、次のように書きました。
function resize($width,$height) {
$exif = exif_read_data($this->image, 0, true);
if(!empty($exif['IFD0']['Orientation'])) {
switch($exif['Orientation']) {
case 3: // 180 rotate left
$this->image = imagerotate($this->image, 180, 0);
break;
case 6: // 90 rotate right
$this->image = imagerotate($this->image, -90, 0);
break;
case 8: // 90 rotate left
$this->image = imagerotate($this->image, 90, 0);
break;
}
}
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
しかし、私がそれを実行すると、サーバーは次のように言います:
exif_read_data() expects parameter 1 to be string, resource given in /home/…/public_html/image_resize.php on line 101
これは101行目です。$exif = exif_read_data($this->image, 0, true);
の問題を検索しましたexif_read_data()
が、一時的な画像をパラメータとして使用できる他の質問やドキュメントで見たように、「与えられたリソース」が何を意味するのかわかりませんでした。
$image->this
したがって、問題は、リソースとして表示されないようにするにはどうすればよいですか?