IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

 Kayıt ol  Topluluk
Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
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

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet
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