lostyazilim
tr.link

WordPress Resim Boyutlandırma – Image Resize

5 Mesajlar 2.246 Okunma
lstbozum
tr.link

ErenKeskin ErenKeskin Girişimci, Front-end Developer Kullanıcı
  • Üyelik 11.09.2011
  • Yaş/Cinsiyet 29 / E
  • Meslek Elektrik-Elektronik Mühendisi
  • Konum Eskişehir
  • Ad Soyad E** K**
  • Mesajlar 1223
  • Beğeniler 243 / 336
  • Ticaret 2, (%100)
WordPress‘te resmi kırparak boyutlandırma işlemini yapabilmek için çok uğraştım, araştırdım, denedim ve sonunda buldum. Bu yazıyı yazarak aynı sorunu yaşayanların acılarını dindirmek istiyorum.

Timthumb, Vt_resize, AQ Resize gibi eklenti olmayan ama benim pek randıman alamadığım kütüphaneleri de kullanabilirsiniz ancak WordPress’in kendi özelliğini kullanmak yerine bunları tercih edeceğinizi düşünmüyorum.

Website optimizasyonu için resimler oldukça önemli yer kaplıyor. Google Pagespeed üzerinden sitenizin hız kontrolünü yaptığınız zaman resim sıkıştırma ve boyutlandırma için çok büyük yüzdelik kısım ayrılıyor. Üzerinde çalıştığım bir proje için ihtiyaç duyduğum resim boyutlandırma işleminin nasıl olduğunu size açıklamaya çalışacağım.

Kodun temelinde WordPress’in 3.5.0 sürümünde eklenen WP_Image_Editor sınıfı yer alıyor. Bu sınıf yardımıyla oluşturacağımız kod ile öne çıkarılan görselimizi alıp, tekrar boyutlandırma işleminin ardından – istersek farklı bir isimle bile olabilecek şekilde – yeniden kayıt ederek o resmi kullanacağız.

Ekleyeceğim kod içerisindeki yorum satırları sayesinde tüm satırların anlamını açıklamış olacağım.

if (get_the_ID() && get_post_thumbnail_id(get_the_ID())) { // Yazının yada Resimin ID'si varsa
$resimDizi = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), 'full'); //ORGINAL RESİM BOYUTU - default = full
$resimAdres = $resimDizi[0]; // Dizideki resim URL'si
$resimYol = realpath(str_replace(get_bloginfo('url'), '.', $resimAdres));
$isim = basename($resimYol);
$yeniResimYolu = str_replace($isim, 'onek_' . $isim, $resimYol); // Yeni kayıttaki ön ek - "onek_" ister değiştirin istereniz silin
$yeniResimAdres = str_replace($isim, 'onek_' . $isim, $resimAdres);
if (!file_exists($yeniResimYolu)) {
$degisecekResim = wp_get_image_editor($resimYol); // Hayat kurtaracak kodumuz
if (!is_wp_error($degisecekResim)) {
$degisecekResim->resize(120, 120, true); // Resimi 120x120 yeniden boyutlandırma, true kesme işlemini temsil ediyor
$degisecekResim->save($yeniResimYolu); // Resmi yeniden ön eke sahip olarak kayıt ediyor.
}
}
}


Bu kodu while döngüsü içerisinde bir yere yazdıktan sonra boyutlandırılmış öne çıkarılan görselinizi göstermek için



kodunu kullanmanız gerekmektedir.

Hepimiz biliyoruz ki bu kodu sadece bir yerde kullanmayacağız, farklı farklı yerlerde kullanmamız gerekecek ve her döngünün içerisine bu kodu yazmamız döngünün şişmesini, sunucunun CPU’sunun zorlanmasına sebep olacak. O yüzden bunu her döngüde ayrı ayrı kullanmak yerine direk olarak functions.php üzerinden bir fonksiyon oluşturarak kısa bir şekilde yapmak daha mantıklı, hızlı ve kullanışlı bir çözüm olacaktır. Onun için gerekli kodlarımız

function ocgBoyut($resimID, $genislik = 100, $yukseklik = 100) { // Öne Çıkarılan Görsel Boyutlandırma Fonksiyonu

$resimDizi = wp_get_attachment_image_src($resimID, 'full');
$resimAdres = $resimDizi[0]; // Dizideki resim URL'si
$resimYol = realpath(str_replace(get_bloginfo('url'), '.', $resimAdres));
$isim = basename($resimYol);
$yeniResimYolu = str_replace($isim, 'onek_' . $isim, $resimYol); // Yeni kayıttaki ön ek - "onek_" ister değiştirin istereniz silin
$yeniResimAdres = str_replace($isim, 'onek_' . $isim, $resimAdres);

if (!file_exists($yeniResimYolu)) {
$degisecekResim = wp_get_image_editor($resimYol); // Hayat kurtaracak kodumuz
if (!is_wp_error($degisecekResim)) {
$degisecekResim->resize($genislik, $yukseklik, true); // Resimi Genislik x Yukseklik olarak yeniden boyutlandırma, true kesme işlemini temsil ediyor
$degisecekResim->save($yeniResimYolu); // Resmi yeniden ön eke sahip olarak kayıt ediyor.
}
}

return $yeniResimAdres;

}


Resimin ekleneceği while döngüsü içerisine




kodunu ekleyerek boyutlandırılmış resminizi gösterebilirsiniz.

Kodlar içerisinde açıklamalarda belirttiğim kısımları düzenleyebilirsiniz. Mesela ben yeni kayıt edilecek resimlerimde ön ek bulunmasını istemediğim için “onek_” kodunu silerek işlem yaptım. Bunun dışında bu kodu geliştirmek isterseniz WordPress Codex sayfasında yer alan WP_Image_Editor sınıfını ve wp_get_image_editor fonksiyonunu inceleyebilirsiniz.

Eksikleri, yanlışları veya sorunlarınızı sitemin üzerindeki yorum kısmından belirtirseniz yardımcı olmaya çalışırım.

Kaynak: Wordpress Resim Boyutlandırma - Image Resize
 

 

herenkeskin.com - Elektrik ve Elektronik Mühendisi - Gömülü Sistemler üzerine çalışıyorum.
wmaraci
reklam

Shrikeen Shrikeen Frontend Developer Kullanıcı
  • Üyelik 24.06.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek Front End Developer
  • Konum İstanbul Avrupa
  • Ad Soyad F** Ş**
  • Mesajlar 2933
  • Beğeniler 745 / 744
  • Ticaret 60, (%100)
Hocam bu işlem yerine daha basit olan şu işlem yapılabilir. Hem de size sıkıntı çıkarmaz.

Functions.php adresine aşağıdaki satırı eklersiniz.

add_image_size( ‘yazi-gorsel’, 667, 350, array( ‘center’, ‘center’ ) ); // Yazı Resimi Kırpılmış Olacaktır

667 - 350 olan alanlardan resimin genişliğini ve yüksekliğini ayarlayabilirsiniz. Aynı zamanda da center center yani tam ortadan keseceğimizi bildiririz.

Aşağıdaki kodu da öne çıkarılan görsel nerede çıkacaksa orada kullanırız.

if ( has_post_thumbnail() ) {
the_post_thumbnail( ‘yazi-gorsel’ );
}
?>


Kendi blogumda bununla ilgili yazı yazmıştım. Kolay gelsin.
 

 

ErenKeskin ErenKeskin Girişimci, Front-end Developer Kullanıcı
  • Üyelik 11.09.2011
  • Yaş/Cinsiyet 29 / E
  • Meslek Elektrik-Elektronik Mühendisi
  • Konum Eskişehir
  • Ad Soyad E** K**
  • Mesajlar 1223
  • Beğeniler 243 / 336
  • Ticaret 2, (%100)

Ferdi Şahin adlı üyeden alıntı

Hocam bu işlem yerine daha basit olan şu işlem yapılabilir. Hem de size sıkıntı çıkarmaz.

Functions.php adresine aşağıdaki satırı eklersiniz.



667 - 350 olan alanlardan resimin genişliğini ve yüksekliğini ayarlayabilirsiniz. Aynı zamanda da center center yani tam ortadan keseceğimizi bildiririz.

Aşağıdaki kodu da öne çıkarılan görsel nerede çıkacaksa orada kullanırız.



Kendi blogumda bununla ilgili yazı yazmıştım. Kolay gelsin.


Bu şekilde de denemiştim ama kırpma işlemi gerçekleştirmemişti o yüzden farklı bir yöntem arayışına girdim.
 

 

herenkeskin.com - Elektrik ve Elektronik Mühendisi - Gömülü Sistemler üzerine çalışıyorum.

Shrikeen Shrikeen Frontend Developer Kullanıcı
  • Üyelik 24.06.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek Front End Developer
  • Konum İstanbul Avrupa
  • Ad Soyad F** Ş**
  • Mesajlar 2933
  • Beğeniler 745 / 744
  • Ticaret 60, (%100)

ErenKeskin adlı üyeden alıntı

Bu şekilde de denemiştim ama kırpma işlemi gerçekleştirmemişti o yüzden farklı bir yöntem arayışına girdim.


Bu yöntemi yaptıktan sonra olmamasının sebebi yeni eklediğiniz resimler için geçerli olacaktır. Yani yeni eklediğiniz resimler tam olarak kırpılacaktır. Ondan önceki yazılarda öne çıkarılmış görsel kırpılmayacaktır.
 

 

wmaraci
wmaraci

ErenKeskin ErenKeskin Girişimci, Front-end Developer Kullanıcı
  • Üyelik 11.09.2011
  • Yaş/Cinsiyet 29 / E
  • Meslek Elektrik-Elektronik Mühendisi
  • Konum Eskişehir
  • Ad Soyad E** K**
  • Mesajlar 1223
  • Beğeniler 243 / 336
  • Ticaret 2, (%100)

Ferdi Şahin adlı üyeden alıntı

Bu yöntemi yaptıktan sonra olmamasının sebebi yeni eklediğiniz resimler için geçerli olacaktır. Yani yeni eklediğiniz resimler tam olarak kırpılacaktır. Ondan önceki yazılarda öne çıkarılmış görsel kırpılmayacaktır.


Bunu bilmiyordum, teşekkür ederim. Benim anlattığım yöntemde resmi yeniden boyutlandırarak kaydettiği için eski resimler de boyutlandırılmış oluyor.
 

 

herenkeskin.com - Elektrik ve Elektronik Mühendisi - Gömülü Sistemler üzerine çalışıyorum.
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al