Resmi, Çerçevede Boşluk Bırakmadan Boyutandırmak?
-
Arkadaşlar merhaba,
başlık yeteri kadar açık olmadı ama şöyle özetleyeyim:
180x180 px boyutlarında bir çerçeve olduğunu düşünelim.
Boyutu belirsiz(200x150 veya 150x200) gibi bir resmi ben bu çerçeveye tabiri caizse cuk oturtmak istiyorum.
Yani resmin orantısını bozmadan çerçeveye yerleştirme yapacağım. Ancak resmin en küçük kenarı en az çerçevenin kenarı kadar olacak.
Bu konuda algoritma oluşturamadım :D Yardımcı olacak arkadaşlara çok müteşekkirim :)
-
resmin şeklini şemalini bozmadan nasıl mümkün olabilir ki bu ? Bir yerlerini kırpman gerekir en azından
-
photoshop / edit / free transform
-
çerçeveni 50px 50px şeklinde yap daha sonra divlere background vererek repeat larını iyi ayarlıyarak çerçeveni min boyutta oluşturt içine verdin mi resmi çerçeve genişler kaplar resmi
-
Hocam tam anlatamadım galiba.
Ben html'de problem yaşamıyorum. Ben bir php sınıfındaki boyutlandırma fonksiyonu algoritmasından bahsediyorum.
Yani sitede gözükecek resim boyutu -ki bu çerçeve oluyor- sabit(110x110) pixel. Şimdi elimdeki ürün resminin en uzun köşesini değil, en kısa köşesini 110'a çekeceğim. bu vesileyle uzun köşeden feragat edilecek.
Ya büyük resme ortadan crop yapılmış gibi düşünün...
Yanıtlar için çok teşekkürler.
Not: Opencart'a entegre edecem.
-
Ancak resmin en küçük kenarı en az çerçevenin kenarı kadar olacak.
bu cümleyi anlayan mealini yazsın :)
-
KaRaKuLe bunu yazdı:
-----------------------------Ancak resmin en küçük kenarı en az çerçevenin kenarı kadar olacak.
bu cümleyi anlayan mealini yazsın :)
-----------------------------ne bileyim hacı, aklıma gelen bu :)
-
c# da yaparım da php bilmem.
mantık anlatayım...
- değişkenler ----
(float)Width = boyutlandırılacak resmin genişliği
(float)Height = boyutlandırılacak resmin yüksekliği
(float)Oran, (float)NewWidth, (float)NewHeight
- işlem --------
if(width >= 110 && height >= 110) { if(width > height){ Oran = Width / Height; NewWidth = 110; NewHeight = 110 * Oran; } else{ Oran = Height / Width ; NewHeight = 110; NewWidth = 110 * Oran; } }Genel Mantık Bu şekilde olması gerekli.
edit: burdaki mantıkla Genişlik ve Yüksekliklik eşit oranda küçüldüğü için resmin kalitesi bozulmaz.
Resmi Çerçeveye Oturtma İşini Cssle değil de direk resmin üzerinde yapacaksanda.Yine php yok mantığı anlatayım
110px X 110px new Bitmap Oluşturuyorsun.
Bitmapin 0,0 noktasından 110X110 beyaz dikdörtgen çizdiriyorsun.
NewHeight,NewWidth ile oluşturduğun resmi Bunlardan Hangisi 110 dan küçükse Onunla 110 arasındaki farkı 2 ye bölüyorsun(Mesela yükseklik 90 olmuş diyelim 110 - 90 / 2 = 10)
çıkan sonuca göre Beyaz Bitmapin O kordinatına Resmi Çizdiriyorsun. (örnek: NewHeight = 90, NewWidth 110; 110 - 90 / 2 = 10; Oluşturulan Resim Beyaz Resmin 0,10 kordinatına gelecek,
örnek2: NewHeight = 110, NewWidth 80;
Oluşturulan Resim Beyaz Resmin 15,0 kordinatına gelecek
)
EN Kısa Böyle Anlatabildim
-
Bir resmin bir çerçeveye cuk oturması için
Resimin boyutlarının çerçevenin boyutları ile aynı veya orantılı olması lazım, ya da orantılanması lazım..
çerçeve 120x40 ise "k" bir sayı olmak üzere k*120xk*40 olmalıdır..
-
Eyvallah, hallettim onu. max yerine min fonksiyonunu kullandım scala kısmında :) Vatandaş max yapmış resim tam boyut gözüksün diye. Sağolun...
