10/10/2018, 10:51

Hàm upload hình ảnh ntn để đỡ tốn BW và CPU usage?

Ai tư vẫn giúp, mình có viết cái này nhưng thấy ngốn % CPU...
Mình có hàm thế này!


Code:
	function imgupload($file, $name)
	{
		$image = $file['name'];
		$uploadedfile = $file['tmp_name'];
		if (!getimagesize($uploadedfile)) {
			echo 'Loi upload hinh anh!';
			return false;
		}

		if ($image) 
		{
			$filename = stripslashes($file['name']);
			$extension = $this->getExtension($filename);
			$extension = strtolower($extension);
			if (($extension != 'jpg') && ($extension != 'jpeg')
			&& ($extension != 'png') && ($extension != 'gif')) 
			{
				echo 'Ko dung dinh dang';
				return false;
			}
			else
			{
				$fsize = $file['size'];

				if($extension=='jpg' || $extension=='jpeg' )
				{
					$uploadedfile = $file['tmp_name'];
					$src = imagecreatefromjpeg($uploadedfile);
				}
				else if($extension=='png')
					{
						$uploadedfile = $file['tmp_name'];
						$src = imagecreatefrompng($uploadedfile);
					}
					else $src = imagecreatefromgif($uploadedfile);

				$infos = getimagesize($uploadedfile);
				$max = 800;
				$maxthumb = 160;
				$quatily = 80;
				
				$new = $this->resize($infos, $max, $max);
				$tmp = imagecreatetruecolor($new->w,$new->h);

				$newthumb = $this->resize($infos, $maxthumb, $maxthumb);
				$tmpthumb = imagecreatetruecolor($newthumb->w,$newthumb->h);

				imagecopyresampled($tmp,$src,0,0,0,0,$new->w,$new->h,
				$infos[0],$infos[1]);

				imagecopyresampled($tmpthumb,$src,0,0,0,0,$newthumb->w,$newthumb->h, 
				$infos[0],$infos[1]);

				$photoPath = $this->photoPath;
				$thumbsPath = $this->thumbsPath;
				
				$this->createfolder($photoPath);
				$this->createfolder($thumbsPath);
				
				$photoPath = $this->photoPath.DS.$name;
				$thumbsPath = $this->thumbsPath.DS.$name;

				imagejpeg($tmp,$photoPath,$quatily);
				imagejpeg($tmpthumb,$thumbsPath,$quatily);

				imagedestroy($src);
				imagedestroy($tmp);
				imagedestroy($tmpthumb);
			}
		}
		return true;
	}
	function resize($infos, $width, $height)
	{
		//Don't resize images which are smaller than thumbs
		if ($infos[0] < $width && $infos[1] < $height) {
			$iNew->w = $infos[0];
			$iNew->h = $infos[1];
			return $iNew;
		}
		// keep proportions
		$iWidth = $infos[0];
		$iHeight = $infos[1];
		$iRatioW = $width / $iWidth;
		$iRatioH = $height / $iHeight;

		if ($iRatioW < $iRatioH) {
			$iNew->w = $iWidth * $iRatioW;
			$iNew->h = $iHeight * $iRatioW;
		} else {
			$iNew->w = $iWidth * $iRatioH;
			$iNew->h = $iHeight * $iRatioH;
		}
		return $iNew;
	}
jdkhang viết 12:53 ngày 10/10/2018
bạn thay thẻ PHP bằng thẻ code để ko còn bị mấy dấu *** nữa. up ^
olbk viết 12:57 ngày 10/10/2018
Được gửi bởi jdkhang
bạn thay thẻ PHP bằng thẻ code để ko còn bị mấy dấu *** nữa. up ^
Cám ơn! hàm trên còn tạo cả thumbs

[=========> Bổ sung bài viết <=========]

upp! cần đc giải quyết!
vnntech.com viết 13:04 ngày 10/10/2018
kiểu gì thì nó cũng bị tốn vì thực chất là nó upload lên server rồi nó mới bắt đầu nó mới xử lý ảnh. muốn không tốn chỉ có cách upload thông qua một free host, sau khi upload xong thì dùng code tự động lấy về nơi cần.
anhchanghaudau viết 12:53 ngày 10/10/2018
Được gửi bởi vnntech.com
kiểu gì thì nó cũng bị tốn vì thực chất là nó upload lên server rồi nó mới bắt đầu nó mới xử lý ảnh. muốn không tốn chỉ có cách upload thông qua một free host, sau khi upload xong thì dùng code tự động lấy về nơi cần.
Thao tác lấy về không tốn bandwidth chăng ?? Và host free thì cho phép úp thẳng lên mà không cần kiểm tra hợp lệ ??
Nên cách này không ổn đâu
BnoL viết 13:03 ngày 10/10/2018
Mún scale thì viết = C đi bạn
Bài liên quan
0