⚠️ Güvenlik nedeniyle tüm kullanıcı şifreleri sıfırlanmıştır. Lütfen buraya tıklayarak yeni şifre talep ediniz.
IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet odaları

>
+
Etiketlenen Kullanıcılar

 
 
LinkBack Seçenekler Arama Stil
Prev önceki Mesaj   sonraki Mesaj Next
Alt 16 Ekim 2014, 15:06   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
image resize ve crop class




PHP Kod:   Kodu kopyalamak için üzerine çift tıklayın!
<?php
class resize
{
private 
$image;
private 
$width;
private 
$height;
private 
$imageResized;

function 
__construct($fileName)
{
$this->image $this->openImage($fileName);
$this->width imagesx($this->image);
$this->height imagesy($this->image);
}

private function 
openImage($file)
{
$extension strtolower(strrchr($file'.'));
switch(
$extension)
{
case 
'.jpg':
case 
'.jpeg':
$img = @imagecreatefromjpeg($file);
break;
case 
'.gif':
$img = @imagecreatefromgif($file);
break;
case 
'.png':
$img = @imagecreatefrompng($file);
break;
default:
$img false;
break;
}
return 
$img;
}

public function 
resizeImage($newWidth$newHeight$option="auto")
{
$optionArray $this->getDimensions($newWidth$newHeight$option);
$optimalWidth $optionArray['optimalWidth'];
$optimalHeight $optionArray['optimalHeight'];

$this->imageResized imagecreatetruecolor($optimalWidth$optimalHeight);
imagecopyresampled($this->imageResized$this->image0000$optimalWidth$optimalHeight$this->width$this->height);

if (
$option == 'crop') {
$this->crop($optimalWidth$optimalHeight$newWidth$newHeight);
}
}

private function 
getDimensions($newWidth$newHeight$option)
{
switch (
$option)
{
case 
'exact':
$optimalWidth $newWidth;
$optimalHeight$newHeight;
break;
case 
'portrait':
$optimalWidth $this->getSizeByFixedHeight($newHeight);
$optimalHeight$newHeight;
break;
case 
'landscape':
$optimalWidth $newWidth;
$optimalHeight$this->getSizeByFixedWidth($newWidth);
break;
case 
'auto':
$optionArray $this->getSizeByAuto($newWidth$newHeight);
$optimalWidth $optionArray['optimalWidth'];
$optimalHeight $optionArray['optimalHeight'];
break;
case 
'crop':
$optionArray $this->getOptimalCrop($newWidth$newHeight);
$optimalWidth $optionArray['optimalWidth'];
$optimalHeight $optionArray['optimalHeight'];
break;
}
return array(
'optimalWidth' => $optimalWidth'optimalHeight' => $optimalHeight);
}

private function 
getSizeByFixedHeight($newHeight)
{
$ratio $this->width $this->height;
$newWidth $newHeight $ratio;
return 
$newWidth;
}

private function 
getSizeByFixedWidth($newWidth)
{
$ratio $this->height $this->width;
$newHeight $newWidth $ratio;
return 
$newHeight;
}

private function 
getSizeByAuto($newWidth$newHeight)
{
if (
$this->height $this->width)
{
$optimalWidth $newWidth;
$optimalHeight$this->getSizeByFixedWidth($newWidth);
}
elseif (
$this->height $this->width)
{
$optimalWidth $this->getSizeByFixedHeight($newHeight);
$optimalHeight$newHeight;
}
else
{
if (
$newHeight $newWidth) {
$optimalWidth $newWidth;
$optimalHeight$this->getSizeByFixedWidth($newWidth);
} else if (
$newHeight $newWidth) {
$optimalWidth $this->getSizeByFixedHeight($newHeight);
$optimalHeight$newHeight;
} else {
$optimalWidth $newWidth;
$optimalHeight$newHeight;
}
}
return array(
'optimalWidth' => $optimalWidth'optimalHeight' => $optimalHeight);
}

private function 
getOptimalCrop($newWidth$newHeight)
{
$heightRatio $this->height $newHeight;
$widthRatio $this->width $newWidth;

if (
$heightRatio $widthRatio) {
$optimalRatio $heightRatio;
} else {
$optimalRatio $widthRatio;
}
$optimalHeight $this->height $optimalRatio;
$optimalWidth $this->width $optimalRatio;
return array(
'optimalWidth' => $optimalWidth'optimalHeight' => $optimalHeight);
}

private function 
crop($optimalWidth$optimalHeight$newWidth$newHeight)
{
$cropStartX = ( $optimalWidth 2) - ( $newWidth /);
$cropStartY = ( $optimalHeight2) - ( $newHeight/);
$crop $this->imageResized;
$this->imageResized imagecreatetruecolor($newWidth $newHeight);
imagecopyresampled($this->imageResized$crop 00$cropStartX$cropStartY$newWidth$newHeight $newWidth$newHeight);
}

public function 
saveImage($savePath$imageQuality="100")
{
$extension strrchr($savePath'.');
$extension strtolower($extension);

switch(
$extension)
{
case 
'.jpg':
case 
'.jpeg':
if (
imagetypes() & IMG_JPG) {
imagejpeg($this->imageResized$savePath$imageQuality);
}
break;

case 
'.gif':
if (
imagetypes() & IMG_GIF) {
imagegif($this->imageResized$savePath);
}
break;

case 
'.png':
$scaleQuality round(($imageQuality/100) * 9);
$invertScaleQuality $scaleQuality;
if (
imagetypes() & IMG_PNG) {
imagepng($this->imageResized$savePath$invertScaleQuality);
}
break;
default:
break;
}
imagedestroy($this->imageResized);
}
}



//örnekler 
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #0000BB">$resizeObj 
= new resize('temp.jpg');
echo 
'<img src="temp.jpg"></img><p>';

$resizeObj -> resizeImage(200200'landscape');//genişlik 200 olacak şekilde ayarla
$resizeObj -> saveImage('sample-resized-landscape.jpg'100);
echo 
'<img src="sample-resized-landscape.jpg"></img><p>';


$resizeObj -> resizeImage(200200'portrait');//yükseklik 200 olacak şekilde ayarla
$resizeObj -> saveImage('sample-resized-portrait.jpg'100);
echo 
'<img src="sample-resized-portrait.jpg"></img><p>';


$resizeObj -> resizeImage(200200'auto');//resim ölçüsüne göre otomatik şekilde ayarla
$resizeObj -> saveImage('sample-resized-auto.jpg'100);
echo 
'<img src="sample-resized-auto.jpg"></img><p>';


$resizeObj -> resizeImage(200200'exact');//belirlen ölçü sabit kalarak ayarla (kırpmadan,ölçü içine sıkıştır)
$resizeObj -> saveImage('sample-resized-exact.jpg'100);
echo 
'<img src="sample-resized-exact.jpg"></img><p>';


$resizeObj -> resizeImage(200200'crop');//kırparak ayarla
$resizeObj -> saveImage('sample-resized-crop.jpg'100);
echo 
'<img src="sample-resized-crop.jpg"></img><p>';
?>


__________________
Bu kez pek bir afili yalnızlık, ağlatan bir kadın kadar düşman. Ağzı bozuk üstelik bırakmıyor acıtmadan.
 
Alıntı ile Cevapla

 

Etiketler
class, crop, image, resize, ve


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık