GDライブラリを使用してスクリプトを作成しようとしています。このスクリプトは、アップロードされた任意のサイズの画像を取得し、その比率を維持しながら最大のxをyの親指で作成します。画像が小さすぎる場合は、最大のx/yになります。それの比率とそれを拡大し、それを中央に保ちます。
画像のピクセル化については心配していません。
次の例を見てください
私はそれが実行可能であることを知っていますが、x/y座標の計算に行き詰まっています
これが私が今のところいるところです。定義されたサイズで3つの親指を作成しようとしています
<?php
$sizes = array(
array(
'width' => 640,
'height' => 360
),
array(
'width' => 222,
'height' => 166
),
array(
'width' => 140,
'height' => 105
)
);
if (isset($_FILES['image'])) {
$file = $_FILES['image'];
foreach($sizes as $size) {
if (strpos($file['type'], 'jpeg') !== false || strpos($file['type'], 'jpg') !== false) {
$resource = imagecreatefromjpeg($file['tmp_name']);
}
else if (strpos($file['type'], 'png') !== false) {
$resource = imagecreatefrompng($file['tmp_name']);
}
else if (strpos($file['type'], 'gif') !== false) {
$resource = imagecreatefromgif($file['tmp_name']);
}
else {
echo "bad file type " . $file['type'];
exit;
}
list($width, $height) = getimagesize($file['tmp_name']);
$tmpImage = imagecreatetruecolor($size['width'], $size['height']);
/*
need to do some calculations here
*/
imagecopyresampled($tmpImage, $resource, 0, 0, 0, 0, $width, $height, $size['width'], $size['height']);
ob_start();
imagepng($tmpImage);
$image = ob_get_clean();
echo '<img src="data:image/png;base64,' . base64_encode($image) . '" />';
imagedestroy($tmpImage);
}
var_dump($file, $width, $height);
}
exit;
?>