ゆう's Blog
Imagick 画像縮小コマンド

resizeImageは高品質なリサイズが必要な場合に適しており、thumbnailImageは小さなサムネイルを素早く生成するのに適しています。

resizeImage with EXIF removal

$image = new Imagick('path/to/image.jpg'); $image->resizeImage($width, 0, Imagick::FILTER_LANCZOS, 1, true); // 幅を指定し、高さは自動計算 $image->stripImage(); // EXIF情報を削除 $image->writeImage('path/to/resized_image.jpg');

thumbnailImage with EXIF removal

$image = new Imagick('path/to/image.jpg'); $image->thumbnailImage($width, 0, true); // 幅を指定し、高さは自動計算 $image->writeImage('path/to/thumbnail_image.jpg');

片方のサイズを0に設定することで、縦横比を維持しながらリサイズすることができます。

thumbnailImageは、関連付けられたプロパティをすべて削除します。

「2個以上連続する半角スペース」を「半角スペースの数と同数の 」に置換する

<?php function replaceSpaces($input) { return preg_replace_callback('/ {2,}/', function($matches) { return str_repeat('&nbsp;', strlen($matches[0])); }, $input); } $input = "これは テスト です。"; $output = replaceSpaces($input); echo $output; ?>

ランダムな文字列を作成する関数

function generateRandomString($length, $characters = 'abcdefghijklmnopqrstuvwxyz') { $randomString = ''; $charactersLength = strlen($characters); for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } // 使用例 $length = 10; // 文字数を指定 $randomString = generateRandomString($length); echo $randomString;

PHPでディレクトリを作成する

ディレクトリを作成するためには、親ディレクトリに書き込み権限が必要です。例えば、mkdir()関数を使用する場合、指定したパスの親ディレクトリに書き込み権限がないとエラーが発生します。

mkdir()関数は成功時にtrueを返し、失敗時にfalseを返します。

$parentDir = 'path/to/parent/directory'; $newDir = $parentDir . '/new_directory'; if (is_writable($parentDir)) { if (!file_exists($newDir)) { if (mkdir($newDir, 0777, true)) { echo 'ディレクトリが作成されました'; } else { echo 'ディレクトリの作成に失敗しました'; } } else { echo 'ディレクトリは既に存在します'; } } else { echo '親ディレクトリに書き込み権限がありません'; // エラーログを記録する error_log('親ディレクトリに書き込み権限がありません: ' . $parentDir); }

mkdir()関数の第三引数にtrueを指定することで、再帰的に親ディレクトリも含めて作成することができます。つまり、指定したパスの途中に存在しないディレクトリがあった場合でも、それらのディレクトリを自動的に作成してくれます。

umaskの影響でmkdirで指定したパーミッションにならないことがある:
umaskは新しく作成されるファイルやディレクトリのデフォルトのパーミッションを制限するための設定です。例えば、umaskが0022に設定されている場合、0777でディレクトリを作成しても実際には0755になります。mkdirでディレクトリを作成し、その後にchmodでパーミッションを設定して希望のパーミッションにする。

パーミッションを確認

$dir = 'path/to/directory';

if (is_readable($dir) && is_writable($dir) && is_executable($dir)) {
    echo '読み込み、書き込み、実行のすべての権限があります';
} else {
    echo '必要な権限がありません';
}

file_put_contents 関数

file_put_contents 関数は、書き込みが成功した場合には書き込まれたバイト数を返し、失敗した場合には false を返します。

$result = file_put_contents('/path/to/directory/file.txt', 'Hello, World!');
if ($result === false) {
    echo 'ファイルの作成に失敗しました。';
} else {
    echo '書き込まれたバイト数: ' . $result;
}

PHPでMySQLデータをインポートする

<?php
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';
$backupFile = 'path_to_your_backup_file.sql';

// データベース接続
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// SQLファイルを読み込む
$sql = file_get_contents($backupFile);

// SQLクエリを実行
$conn->exec($sql);

echo "Import completed.";
?>

PHPでMySQLデータをエクスポートする

<?php
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';

// データベース接続
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// テーブル名を取得
$tables = $conn->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);

$backupFile = 'backup_' . date('Ymd_His') . '.sql';
$handle = fopen($backupFile, 'w');

foreach ($tables as $table) {
    // テーブルの作成文を取得
    $createTableStmt = $conn->query("SHOW CREATE TABLE $table")->fetch(PDO::FETCH_ASSOC);
    fwrite($handle, $createTableStmt['Create Table'] . ";\n\n");

    // テーブルのデータを取得
    $rows = $conn->query("SELECT * FROM $table")->fetchAll(PDO::FETCH_ASSOC);
    foreach ($rows as $row) {
        $values = array_map([$conn, 'quote'], array_values($row));
        fwrite($handle, "INSERT INTO $table VALUES (" . implode(', ', $values) . ");\n");
    }
    fwrite($handle, "\n\n");
}

fclose($handle);
echo "Backup completed: $backupFile";
?>

PHPでImagickを使用して画像をWebPに変換する

<?php
$image = new Imagick('input.jpg'); // 入力画像ファイル
$image->setImageFormat('webp'); // 出力形式をwebpに設定
$image->setImageCompressionQuality(80); // 画像の品質を設定(0-100の範囲、高いほど品質が良い)
$image->writeImage('output.webp'); // 出力ファイル名
?>

PHPでImagickとGDの利用可能性を判別する

if (extension_loaded('imagick')) {
    echo 'Imagickを使用します。';
} elseif (extension_loaded('gd')) {
    echo 'GDを使用します。';
} else {
    echo 'ImagickもGDも利用できません。';
}