ギャラリーにアップロードする画像を含むテキスト メッセージを iPhone から送信してくれるクライアントがいます。テキストから画像を取得し、iPhone の管理ページに移動して、画像をギャラリーに直接アップロードできるように、管理システムを作成しようとしています。
これにより、日々の仕事のスケジュールを大幅に節約できます。
提供されたコードを使用します。次の機能を追加するにはどうすればよいですか。
Photoshop の Web jpg 機能に保存するのと同じように、ファイル サイズをできれば小さいサイズに圧縮したいと考えています。(私が取得するほとんどの画像は約 1 ~ 3 MB です。最大約 150 ~ 500 kb に減らしたいと考えています)
幅を自動的に 760px に変更したいのですが、縦横比を維持して画像がつぶれないようにします。彼は私に横向きと縦向きの画像を送ってくれます。
iPhoneの画像です。拡張子は .JPG (すべて大文字) です。これを .jpg (すべて小文字) に変更したいと思います。
これらの関数のいずれかが非常に役立ちますが、3 つすべてが私の状況に理想的です。
これが私が使用しているコードですか?
これは、@tman が提供する画像をアップロードおよびサイズ変更するための最終的な正しいコードです。php.ini ファイルに imagick がインストールされていることを確認してください。ホスティングプロバイダーに確認してインストールしてください。
<?php
include($_SERVER['DOCUMENT_ROOT'] . "/connections/dbconnect.php");
for($i=0;$i<count($_FILES["image"]["name"]);$i++){
if($_FILES["image"]["name"][$i] != ''){ // don't insert if file name empty
$dataType = mysql_real_escape_string($_POST["dataType"][$i]);
$title = mysql_real_escape_string($_POST["title"][$i]);
$fileData = pathinfo($_FILES["image"]["name"][$i]);
$fileName = uniqid() . '.' . $fileData['extension'];
$target_path = $_SERVER['DOCUMENT_ROOT'] . "/images/gallery/" . $fileName;
if (move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_path)){ // The file is in the images/gallery folder.
// Insert record into database by executing the following query:
$sql="INSERT INTO images (data_type, title, file_name) "."VALUES('$dataType','$title','$fileName')";
$retval = mysql_query($sql);
///NEW
$size = getimagesize($target_path);
$width=$size[0];
$height=$size[1];
$newwidth = 760;
$newheight = $height*($newwidth/$width);
$pic = new Imagick($target_path);//specify name
$pic->resizeImage($newwidth,$newhight,Imagick::FILTER_LANCZOS,1);
unlink($target_path);
$pic->writeImage($target_path);
$pic->destroy();
///NEW
echo "The image {$_FILES['image']['name'][$i]} was successfully uploaded and added to the gallery<br />
<a href='index.php'>Add another image</a><br />";
}
else
{
echo "There was an error uploading the file {$_FILES['image']['name'][$i]}, please try again!<br />";
}
}
} // close your foreach
?>
uploader.php 元のコード。一度に 4 つの画像をアップロードできます。動作します!!!
<?php
include($_SERVER['DOCUMENT_ROOT'] . "/connections/dbconnect.php");
for($i=0;$i<count($_FILES["image"]["name"]);$i++){
if($_FILES["image"]["name"][$i] != ''){ // don't insert if file name empty
$dataType = mysql_real_escape_string($_POST["dataType"][$i]);
$title = mysql_real_escape_string($_POST["title"][$i]);
$fileData = pathinfo($_FILES["image"]["name"][$i]);
$fileName = uniqid() . '.' . $fileData['extension'];
$target_path = $_SERVER['DOCUMENT_ROOT'] . "/images/gallery/" . $fileName;
if (move_uploaded_file($_FILES["image"]["tmp_name"][$i], $target_path)){ // The file is in the images/gallery folder.
// Insert record into database by executing the following query:
$sql="INSERT INTO images (data_type, title, file_name) "."VALUES('$dataType','$title','$fileName')";
$retval = mysql_query($sql);
echo "The image {$_FILES['image']['name'][$i]} was successfully uploaded and added to the gallery<br />
<a href='index.php'>Add another image</a><br />";
}
else
{
echo "There was an error uploading the file {$_FILES['image']['name'][$i]}, please try again!<br />";
}
}
} // close your foreach
?>
参考までに、これにより、画像に一意の名前を付けたり、幅を変更したり、正しい縦横比を維持したり、複数のファイルを同時にアップロードしたりできます。
すごいもの!