Giriş yapmadınız.

#1 31.05.2014 18:48:33

Aliihsan
Üye
Yer: MNSA
Kayıtlı: 12.01.2014
Mesajlar: 5
Website

Laravel Image resize ..

Herkese merhabalar ..
Laravel için popüler olarak kullanılan resize sınıfları bana çok fazla geldiğinden, daha hafif olması için kendime baz anlamda yarayabilecek bir library geliştirdim. Tabi ne kadar işe yaradığı görecelidir fakat şuan ki boyutlandırma, thumb oluşturma işimi gayet temiz bir şekilde yapmakta. Belki işine yarayan biri çıkar diyerekten paylaşma ihtiyacı duydum. Gözden kaçan bir yer varsa yardımcı olursanız da ayrıca sevinirim.

31.05.2014 - "laravel/framework": "4.1.*"
Ali ihsan Yılmaz - Mail: [email protected] - FB: http://www.fb.com/aihsancom
 
1. parametre: Input'dan gelen resim dosyası.
2. parametre: Kaydedilecek resim isminin önüne konulacak ek.
3. parametre: Kaydedilecek resime atanacak isim.
4. parametre: Resmin kaydedileceği klasör yolu.
5. parametre: Resme atanacak Genişlik.
6. parametre: Resme atanacak Yükseklik.
7. parametre: İşleme alınacak resmin maksimum byte boyutu.
 
Genişlik ve Yükseklik bilgisi:
- Genişlik ve Yükseklik, null ise resim boyutları değiştirilmeden işleme alınır,
- Genişlik, null ise resim Yükseklik değerine orantılanarak kaydedilir,
- Yükseklik, null ise resim Genişlik değerine orantılanarak kaydedilir,
- Genişlik ve Yükseklik parametreleri belirtildiyse ölçüler baz alınarak kaydedilir.
 
Boyut bilgisi:
- Değer Byte olarak girilmelidir.
- Gerekli değer translateleri için -> http://converter.elliotbeken.com/
 
Return bilgisi:
- İşlem esnasında boyut, mime ve boyut ölçüleme hataları alınırsa değer False,
resim başarıyla işlendiyse kaydedilen resim ismi döner.
 
Örnek kullanım;
	$resim		= Input::file('file');
	$isim		= Str::slug($resim->getClientOriginalName(), '-'));
	$klasor		= public_path().'/upload/';
	$boyut		= 7864320; 
 
	$resimKucult = Resim::oyna($resim, $isim, $klasor, null, 453, null, $boyut);
	$resimThumb = Resim::oyna($resim, $isim, $klasor, 150, 100, 'thumb_', $boyut);

Library: http://laravel.io/bin/Qm36V

Başta sineld olmak üzere Laravel'in Türkiye'deki yayılımına yardımcı olan tüm arkadaşlara teşekkür ediyorum smile

Son düzenleyen Aliihsan (31.05.2014 19:24:06)

Çevrimdışı

#2 02.06.2014 09:23:00

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,490
Website

Yanıt: Laravel Image resize ..

Ellerine sağlık sevgili @Aliihsan, bunu minik bir pakete dönüştürürsen daha fazla kullanıcıya ulaşabilir, pakaet oluşturulması için dokümantasyonu inceleyebilirsin.

Çevrimdışı

#3 13.06.2014 12:37:36

zafer
Üye
Kayıtlı: 02.06.2014
Mesajlar: 49

Yanıt: Laravel Image resize ..

Merhaba Ali,
Paylaşım için teşekkürler, bende şu sıralar resim işleri ile uğraşıyordum. Böyle bir şey şimdilik işimi görür gibi geliyor.

Diğer taraftan kodlama konusunda beni yanlış anlama ama berbat bir kod yazmışsın. Başında geçen class ibaresi dışında bu kodun sınıf olarak hiç bir anlamı yok. Açıkcası tek bir metodun içine her şeyi tıkıştırmışsin. Ayrıca yazım tarzın çok kötü tek bir satıra sığdırdığın kodları okumak ve anlamak gerçekten zor. Koda ilk bakıldığında görünmese bile kodun içinde hiç bir görevi olmayan else if yapısı bile var. else if kontrolü yazılmış içi boş bırakılmış, ya unutuldu yada yanlış tasarım yüzünden, sorunu çözmek için öyle kullanılmak zorunda kaldı bilemiyorum.

Forumda bir çok arkadaşın mesajında SOLID prensiplerinin adı geçiyor. Bu prensiblerden biri olan (S)ingle Responsibility'ye göre her modül tek bir sorumluluğa sahip olmalı, senin metoda bakınca, ne iş olsa yaparım abi der gibi.

Bir örnek vererek bitireyim; kodun başlarında bir mime testi ve buna istinaden bir kaynak nesnesi oluşturma işlemin var. if ve elseif kullanımı o kadar yoğun ki ilk bakışta çok karışık görünüyor. O kod parçasının sorumluluğu mime türüne göre yeni bir kaynak nesnesi oluşturmak, dolayısıyla onun yeri burası değil yeni bir metot olmalı bence, ayrıca if yerine switch cok daha okunaklı olacaktır. Buna göre benim yeni metodum şöyle olabilir.

	public function kaynakHazirla($mime, $resim)
	{
		$kaynak = false;
		switch ($mime)
		{
			case "image/jpg":
			case "image/jpeg":
			case "image/pjpeg":
					$kaynak = imagecreatefromjpeg($resim);
					break;

			case "image/gif":
					$kaynak = imagecreatefromgif($resim);
					break;

			case "image/png":
					$kaynak = imagecreatefrompng($resim);
					break;
		}

		return $kaynak;
	}

Lütfen eleştirilerimi yanlış anlama, amacım sadece bildiğim kadarıyla daha iyisini gösterebilmek. Ancak neden daha iyi yazılımlar geliştirmeliyim diye düşünen, SOLID ve tasarım desenleri ile ilgilenen arkadaşların önce bu koda bakmalarını öneriyorum.

Çevrimdışı

Forum alt kısmı