Yaptıklarımı sadece yaptığım zaman anlayabilirsiniz.

9 Mayıs 2010 Pazar

Php ImageResizer Coded by Yuri

Merhaba arkadaşlar geçen gün bir projede lazım olan birşeydi bu biraz araştırdıkdan sonra upload edilen resimin boyutlarıyla oynayan bir class buldum ancak bu class upload edilen resimlere random isim vermiyor,belilrli güvenlik kontrolleri yapmıyordu.GNU|GPL olduğundan dolayı class'ı biraz geliştirmeye çalıştım.Kullanımından vs. aşağıda bahsettim umarım yararlı olur.


/*
Coded by Yuri From www.megaturks.net
GNU\GPL
Bug or developing ideas for msn : kerem125@megaturks.net
*/
class Upload
{
public function ChangeFileName($name)
{
$name = md5(uniqid(rand()));
return $name;
}
public function UploadFile($upload_control,$upload_dir)
{

$name = $_FILES[$upload_control]["name"];
$tmp = $_FILES[$upload_control]["tmp_name"];
$file_type = $_FILES[$upload_control]["type"];
$file_size = $_FILES[$upload_control]["size"];
if($file_size > "1024000")
{
return "En fazla 1 mb dosya yükleyebilirsiniz";
exit();
}
if(preg_match ("/.php/",$resimblog))
{
return("Php uzantılı dosya ekleyemezsiniz!");
exit();
}

$upload_dir.'/';
$rnd = self::ChangeFileName($name);
$change_name = $rnd;
$file_ext = self::MimeType($file_type);
$changed_file = $change_name.$file_ext;
$move = move_uploaded_file($tmp,$upload_dir.$change_name.$file_ext);
if($move)
{
$image = new SimpleImage();
$image->load($upload_dir.$change_name.$file_ext);
$image->resize(150,150);
$image->save($upload_dir.'k_'.$changed_file);
return $change_name.$file_ext;
}
}
public function MimeType($type)
{
if($type=="image/jpeg")
{
$type = ".jpg";
}
else if($type=="image/x-png")
{
$type = ".png";
}
else if($type=="image/png")
{
$type = ".png";
}
else if($type=="image/pjpeg")
{
$type = ".jpeg";
}
else if($type=="image/gif")
{
$type = ".gif";
}
else
{
echo "Yüklemek istediğiniz dosya jpg,png,jpeg veya gif formatında olmalıdır...";
exit();
}
return $type;
}
}
class SimpleImage {

var $image;
var $image_type;

function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
$upload = new Upload();
?>


Kodlarımız bu kadar kullanım şekli ise şu şekilde...


require_once('upload.class.php');
echo $upload->UploadFile('uploaded','img/');
?>
Açıklamak gerekirse
require_once('upload.class.php');
Sayfamızı çağırıyoruz..
echo $upload->UploadFile('uploaded','img/');
Echo ile yazdırma sebebim veritabanında bu resimlerin isimlerini tutmak isteyen arkadaşlar için random üretilen dosyanın adını return ediyor..Burada uploaded olarak verdiğim parametre sizinde tahmin edebileceğiniz gibi form'dan gelen input nesnemin name'i...Küçük resime ulaşmak isteyen arkadaşlar şu kod parçasını kullanabilirler.
echo 'k_'.$upload->UploadFile('uploaded','img/');
Büyük resime ulaşmak içinse
echo $upload->UploadFile('uploaded','img/');

Umarım yararlı olur...I hope jews can't use it...
Saygılar YuRi

0 yorum:

Yorum Gönder