PHP görüntüleri ile çalışmak için iyi bir yaklaşım nedir?

9 Cevap php
  1. Veritabanında bir görüntü kaydetme yolu ... ve bir çağrı bu görüntünün küçük bir boyut çıkış yapıldığında, diçindeamik, yeniden boyutlveırmak bir değişkene atamak ve bu değişken diyveyauz?

  2. Yükleme sırasında görüntüyü yeniden boyutlveırmak ve ihtiyaçlarınıza göre bunun küçük oluşturmak ve veyaijiçindeal görüntü yolu ve resized görüntü yolları içiçinde veritabanı sütun var?

Burada bir noob açıkçası

9 Cevap

  1. Dosya ve veritabanı yolunu eklemek için orijinal görüntüsünü kaydedin. Diyelim ki ./images/image001.png bunu kaydettiğiniz varsayalım.
  2. Bir istek o görüntünün resized sürümü için yapılmış ise dosya ./images/thumbnails/image001.png, varsa kontrol edin. Eğer varsa, büyük, biz çıktı o görüntü olabilir!
  3. Öyle değil, ancak, anında görüntü işlemek için PHP GD2 veya ImageMagick kitaplıkları kullanın. ./images/thumbnails/image001.png için yeni görüntü kaydetmek ve sonra tarayıcıya gönderiyorsun.

Bu yöntem, çeşitli şekillerde yardımcı olacaktır. Öncelikle, görüntü sadece gereksiz her işlem süresini kesmek, o istenen ilk defa manipüle edilir. İkincisi, size disk alanı tasarrufu, değiştirilmiş görüntü yolu için veritabanında bir sütun keser.

Dinamik görüntüleri onlar yüklenen her zaman boyutlandırma sunucu olacak kadar meşgul bağlı olarak, kendi sunucusu üzerinde çok fazla yük koyabilirsiniz.

Başka bir yaklaşım gerektiğinde yalnızca onu yeniden boyutlandırmak için. Birisi belli bir boyutta bir görüntü istediğinde Yani, yeniden boyutlandırmak ve saklayın. Başka bir isteği aynı görüntü / boyutu gelirse, size zaten resized görüntüyü hizmet verecek.

Veya 3..

Boyutlandırın. O (yani en büyüklüğüne göre) bazı tür bir yerde saklayın ve tüm resized görüntüleri belli bir ismi aramak.

/images/thumb/200x100/200x100_picture.jpg

O adında bir dosya varsa o zaman bir kontrol yapmak. Eğer öyleyse yeniden boyutlandırmak ve hizmet değilse, hizmet vermektedir. Başparmak yok db gerekli. Bir dosya varsa sadece bir çek.

Eğer bir 'orijinal' klasörüne orijinal görüntü saklamak ve ihtiyaç duyulduğunda sonra, yeniden boyutlandırmak varsa, disk alanı ayarlıyoruz VE işlemci gücüne kaydediyorsunuz. Daha sonra yeniden boyutlandırmak, ileride kullanmak için, başka bir klasöre yeniden boyutlandırılmış bir kopyasını saklayın. Bu şekilde, aynı zamanda kullanıcıların tarayıcının önbellek sistemi yararlanmak yardım ediyor. Dinamik her şey resized bir görüntü önbelleğe ve sunucu üzerindeki yük çok koyar değildir. Eğer birkaç resim yüklerken bir sayfa düşünün, onları gerçek zamanlı olarak yeniden boyutlandırma, tüm, bir sunucu katil var!

Upload class bakabilirsiniz

Bu / kırpma görüntüleri yeniden boyutlandırmak için güzel seçenekler var.

Bu kütüphane sayesinde Sizin yüklenen görüntülerin bazı küçük yapmak için ölü basit.

In My opinion, the best way to store images is on the filesystem, not in the database. You can then later simply get all images via FTP for example from the server.

GD image library PHP hızlı, ama bu sistem üzerinde endişe daha fazla olduğu sorusuna aşağı gelir: CPU veya depolama? Tek bir görüntüden yeniden boyutlandırma CPU üzerinde depolama hafif ama ağır. Görüntü veya trafik geniş bir dizi yoksa, küçük bir yedekleme arşivi için yapabilir. Öte yandan eğer depolama bir sorun değildir (ve bu gün olmamalı) kolayca Ólafur Waage veya Andre Miller önermek ne yapmak ve bunları ayrı ayrı saklayabilirsiniz.

Ben yerleşik bir makul büyüklükte web sitesinde yaklaşım 1 kullandık ve hiçbir performans sorunları vardı. Magento de bu şekilde görüntüleri işler. Yüklenip Yani, görüntüyü kaydetmek php görünümü komut görüntü için çağırdığınızda sonra, anında onu üretmek, uygun bir klasöre (oldukça fazla bir önbellek) tasarrufu.

Eğer nokta iki anlatılan yöntemi kullanarak zaman zor bulunan bir şey, bakış bir performans ya da kodlama noktadan değildi. Istemci veya tasarımcı sonra tüm yaşasın yeniden gerekir vb başparmak / görüntülerin boyutuna kendi fikrini değiştirir zaman bir ağrı yeniden yaratma görüntülerin bir parçasıdır. Bu küçük siteler üzerinde Tamam, ama büyük olanlar üzerinde bir ağrı olabilir.

Eğer disk alanı düşükse, o zaman sunucu yükünü uzlaşma ve Opsiyon 1 kullanarak dinamik minik yüklemek zorunda olacak

Sunucu çok meşgul ya da yavaş hızda ise, Seçenek 2 kullanmak için iyi olurdu.

Ama genel hızlandırmak web sitenize, size 2 seçenek birleştirebilirsiniz.

Biz sunucu üzerinde ImgZA.jpg adında bir resim dosyası var diyelim. Dinamik bir komut dosyası çağrısı imgproc.php arayabilirim? Id = ImgZA.jpg & h = 50 & w = 50. Imgproc.php komut 50 50 piksel boyutu ile ImgZA.jpg bir resim zaten oluşturulmuş olup olmadığını kontrol edecektir. Resim var zaten, sadece üzerlerine kullanın. Daha sonra küçük resim oluşturmak değil o zaman saklayın.

Bu disk alanı, sunucu yükü ve (sizin imgproc.php komut) yanı sıra olurlar önlemek için verir optimize eder.