にゃじら的生活+あるふぁ 猫ふんじゃった

IT、プログラム開発、バンド、キーボードやサックス、ぐーたら猫の話など

写真の引っ越しができるようになったのね!

ブログの引っ越しで困っていた写真。

新しい記事は自分の持ってるレンタルサーバから引っ張ってくるようにしたものの、今までのはどうしよう??
どうやって処理するのが一番らくか?考えてたら、今日あっさりお知らせが(笑)

staff.hatenablog.com

PHP 日付を利用したフォルダ作成(夏休みのプログラム その4)

日付を利用して一意の名前作成

$newName = date("YmdHis");    //20160816081205

名前から年・月を切り出す

//$newName 20160816081205 の場合
$dir1= substr($newName, 0,4);  //2016
$dir2= substr($newName, 4,2);  //08

フォルダ作成

function makeDir( $newDir ){
  //ディレクトリが存在しなければ
  if( !is_dir( $newDir )){
    //サブディレクトリ含めフォルダ作成 
    return mkdir( $newDir ,0705, true);
  }
  return false;
}

整理すると、、

$newName = date("YmdHis");     //20160816081205
$dir1= substr($newName, 0,4);  //2016
$dir2= substr($newName, 4,2);  //08
$newDir = $basePath."/".$dir1."/".$dir2; //http://xxxx/img/2016/08
makeDir( $newDir );

PHP ファイルアップロード(夏休みのプログラム その3)

アップロード側(HTML)

<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1回にアップするファイルの最大容量">
<input type="file" id="myFile" name="myFile" accept=".jpg,image/jpeg,image/png">
<p><button type="submit" name="fileupBtn" value="upload">画像アップ</button></p>

ファイル受取側(PHP)

//ファイルアップロード 
//$dir 保存先
//$upName は inputタグのname属性 myFile
function upload( $dir, $upName ){
  //指定したアップロードファイルが存在するなら
    if(isset($_FILES[$upName])){
        $fileName = $_FILES[$upName]['name'];
        $fileTmpName = $_FILES[$upName]['tmp_name'];

        $filePath = $dir."/".$fileName;
        $success = @move_uploaded_file($fileTmpName, $filePath);
        if( $success){
            return $filePath;
        }
    }//if
    return false;
}

PHP 画像のリサイズ (夏休みのプログラム その2)

PHP JPEGPNG画像をリサイズするプログラムのメモ
繰り返しがちょっとセンスがなくて気持ち悪い、、、

//引数 保存先・新しいファイル名・オリジナル画像ファイル・
    リサイズ幅・リサイズ縦・角度(必要な場合)
function imageResize($savePath, $newfileName, $image, 
                        $maxWidth, $maxHeight, $degrees=0){
    //画像のタイプを確認
    $imageType = @exif_imagetype($image);
    $source = false;

    switch( $imageType){
        case IMAGETYPE_JPEG: //元画像jpegの場合
        $source = imagecreatefromjpeg($image);
        break;

        case IMAGETYPE_PNG: //元画像pngの場合
        $source = imagecreatefrompng($image);
        break;

    }//switch

    if( !$source ){
        return false;
    }

    //画像の幅と高さを取得
    $width = ImageSx($source);
    $height = ImageSy($source);

    //新しいサイズを作成
    //とりあえず現在のサイズをいれておく
    $newWidth = $width;
    $newHeight = $height;

    if($width >= $maxWidth || $height >= $maxHeight ){
        if($width == $height) {
            //幅と高さが同じサイズだったら今回は幅にあわせる
            $newWidth = $maxWidth;
            $newHeight = $maxWidth;
        } else if($width > $height) {//横長の場合
            $newWidth = $maxWidth;
            $newHeight = $height*($maxWidth/$width);
        } else if($width < $height) {//縦長の場合
            $newWidth = $width*($maxHeight/$height);
            $newHeight = $maxHeight;
        }
    }

    //新しい画像のサイズを決める
    $resize = imagecreatetruecolor($newWidth , $newHeight);
    if( $imageType == IMAGETYPE_PNG){
        //透過処理 この処理をしておかないと背景が黒くなる
        imagealphablending($resize, false);
        imagesavealpha($resize, true);
    }

    //イメージの一部をコピー、伸縮
    imagecopyresampled($resize, $source,0,0,0,0, 
           $newWidth, $newHeight, $width, $height);

    //左周り
    $rotate = imagerotate($resize, $degrees, 0);
    $newImagePath = $savePath."/".$newfileName;

    switch( $imageType){

        case IMAGETYPE_JPEG;
        //JPEGで保存
        $newImagePath .= ".jpg";
        imagejpeg( $rotate, $newImagePath );
        break;

        case IMAGETYPE_PNG;
        //PNGで保存
        $newImagePath .= ".png";
        imagepng( $rotate, $newImagePath );
        break;

    }//switch

    //リソース破棄
    imagedestroy($source);
    imagedestroy($resize);

    return $newImagePath;
}

夏休みのプログラム その1(PHP)

ブログの引っ越しにともない一番困ったのは写真。

のちのちのことを考えて、借りてるレンタルサーバに写真をアップし、そこからひっぱてくることにしました。 レンタルサーバPHPが利用出来るので、

  • 画像アップ(スマホからのアップも考慮)
  • 画像を適度な大きさにリサイズし、サムネイルも作成
  • リンクしやすいように、コピー用のHTMLタグを表示
  • 画像を削除するための管理プログラム作成
  • 管理プログラムではサムネイルをクリックしたら元画像をlightboxで表示

などを考えながら作っていたら、1日がかりに、、、
もちろんオリンピック見ながらですが(^^;
細切れになりますが、メモも兼ね、プログラムもそのうち、、