我试图建立一个图片库,但我一直在缩小脚本。我把它作为功能。原始输入$_FILES['image']
已替换为$original
。
我很确定这部分是可以的,但我正在添加它以便更好地定位。
$orig_udaje = getimagesize($original['tmp_name']);
$orig_sirka = $orig_udaje[0]; //original width
$orig_vyska = $orig_udaje[1]; //original height
$orig_typ = $orig_udaje[2]; //type of original image
$div_size = 150; //size of image div = size of future thumbnail's smaller side
// choosing smaller side & defining resizing scale
if ($orig_sirka>$orig_vyska)
{
$mira = $orig_vyska / $div_size;
}
else
{
$mira = $orig_sirka / $div_size;
}
$nahled_sirka = $orig_sirka / $mira;
$nahled_vyska = $orig_vyska / $mira;
我认为陷入困境的部分是在本文之下的某处。
$nahled_cache = imagecreatetruecolor($nahled_sirka, $nahled_vyska);
imagecolortransparent($nahled_cache, "0, 0, 0");
if ($orig_typ == "image/jpeg")
{
$nahled_tvorba = imagecreatefromjpeg($original['tmp_name']);
imagecopyresampled($nahled_cache, $nahled_tvorba, 0, 0, 0, 0, $nahled_sirka, $nahled_vyska, $orig_sirka, $orig_vyska);
imagejpeg($nahled_cache, "/data/images/gallery/thumbs/output.jpg");
imagejpeg($original['tmp_name'], "/data/images/gallery/originals/output.jpg");
unlink($original['tmp_name']);
}
if ($orig_typ == "image/png")
{
$obrazek_tvorba = imagecreatefrompng($original['tmp_name']);
imagecopyresampled($nahled_cache, $nahled_tvorba, 0, 0, 0, 0, $nahled_sirka, $nahled_vyska, $orig_sirka, $orig_vyska);
imagepng($nahled_cache, "/data/images/gallery/thumbs/output.png");
imagepng($original['tmp_name'], "/data/images/gallery/originals/output.png");
unlink($original['tmp_name']);
}
感谢您的建议。
答案 0 :(得分:0)
我建议你不要写代码,已经写了很多次...... 尝试使用一些开源类。像this one一样。该类简单轻便,并且具有相当好的文档。 用法很简单:
// *** Include the class
include("resize-class.php");
// *** 1) Initialize / load image
$resizeObj = new resize('sample.jpg');
// *** 2) Resize image (options: exact, portrait, landscape, auto, crop)
$resizeObj -> resizeImage(150, 100, 'crop');
// *** 3) Save image
$resizeObj -> saveImage('sample-resized.gif', 100);
您可以使用'auto'选项代替'crop',并提供最大宽度和高度。这意味着,图像分辨率将根据您提供的最大属性生成,并且还基于图像方向生成。试试吧;)