Как сгенерировать уменьшенную копию изображения с сервера?
Мне нужно изменить размер изображения при выводе на сайте. В вордпресс например, сразу создаются 20 размеров для 1 изображения, а я ищу универсальный способ который будет отдавать браузеру уменьшенную копию изображения с сервера, то есть чтобы не создавать 20 миниатюр, а генерировать их.
Одна фотография должна выводиться на сайте в нескольких размерах.
Ответы (2 шт):
Автор решения: coder8008
→ Ссылка
Я не очень понял вопрос, но вроде так:
<img src="test.png" style="width: 250px; height: 250px">
Автор решения: Чучмар Никита
→ Ссылка
class Picture {
private $image_file;
public $image;
public $image_type;
public $image_width;
public $image_height;
public function __construct($image_file) {
$this->image_file=$image_file;
$image_info = getimagesize($this->image_file);
$this->image_width = $image_info[0];
$this->image_height = $image_info[1];
switch($image_info[2]) {
case 1: $this->image_type = 'gif'; break;//1: IMAGETYPE_GIF
case 2: $this->image_type = 'jpeg'; break;//2: IMAGETYPE_JPEG
case 3: $this->image_type = 'png'; break;//3: IMAGETYPE_PNG
case 4: $this->image_type = 'swf'; break;//4: IMAGETYPE_SWF
case 5: $this->image_type = 'psd'; break;//5: IMAGETYPE_PSD
case 6: $this->image_type = 'bmp'; break;//6: IMAGETYPE_BMP
case 7: $this->image_type = 'tiffi'; break;//7: IMAGETYPE_TIFF_II (порядок байт intel)
case 8: $this->image_type = 'tiffm'; break;//8: IMAGETYPE_TIFF_MM (порядок байт motorola)
case 9: $this->image_type = 'jpc'; break;//9: IMAGETYPE_JPC
case 10: $this->image_type = 'jp2'; break;//10: IMAGETYPE_JP2
case 11: $this->image_type = 'jpx'; break;//11: IMAGETYPE_JPX
case 12: $this->image_type = 'jb2'; break;//12: IMAGETYPE_JB2
case 13: $this->image_type = 'swc'; break;//13: IMAGETYPE_SWC
case 14: $this->image_type = 'iff'; break;//14: IMAGETYPE_IFF
case 15: $this->image_type = 'wbmp'; break;//15: IMAGETYPE_WBMP
case 16: $this->image_type = 'xbm'; break;//16: IMAGETYPE_XBM
case 17: $this->image_type = 'ico'; break;//17: IMAGETYPE_ICO
default: $this->image_type = ''; break;
}
$this->fotoimage();
}
public function imagesave($image_type='jpeg', $image_file=NULL, $image_compress=100, $image_permiss='') {
if($image_file==NULL) {
switch($this->image_type) {
case 'gif': header("Content-type: image/gif"); break;
case 'jpeg': header("Content-type: image/jpeg"); break;
case 'png': header("Content-type: image/png"); break;
}
}
switch($this->image_type) {
case 'gif': imagegif($this->image, $image_file); break;
case 'jpeg': imagejpeg($this->image, $image_file, $image_compress); break;
case 'png': imagepng($this->image, $image_file); break;
}
if($image_permiss != '') {
chmod($image_file, $image_permiss);
}
}
public function imageout() {
imagedestroy($this->image);
}
public function imageresize($new_w, $new_h) {
$new_image = imagecreatetruecolor($new_w, $new_h);
imageAlphaBlending($new_image, false);
imageSaveAlpha($new_image, true);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $new_w, $new_h, $this->image_width, $this->image_height);
$this->image_width = $new_w;
$this->image_height = $new_h;
$this->image = $new_image;
}
}
$new_image = new Picture($filepath);
$new_image->imageresize($new_width, $new_height);
$new_image->imagesave($new_image->image_type, $newfilepath, 80);
$new_image->imageout();