Fotoğraf yüklemelerini işlemek için en iyi yolu nedir?

19 Cevap java

Ben bir aile üyenin düğün için bir web sitesi yapıyorum. Onlar istenen bir özelliği tüm misafirler düğün sonra gidip onların enstantane yükleyebilir bir fotoğraf bölümü oldu. Ben bu yıldız bir fikir olduğunu ve bunu inşa etmek için gitti dedi.

Lojistik: Peki sadece bir sorun var. Yükleme hızları yavaş ve modern kameralar resimleri (2-5 + Megs) büyük.

Ben sadece ~ 800px genişliğinde görüntüleri ve bazıları çok ideal ben üç şey yapmak için bir istemci tarafı editörü kullanarak ilgili arıyorum dönen gerektirebilir ihtiyacınız olacaktır:

  1. Kullanıcılar birden fazla dosya alalım
  2. Onlar doğru yolu kalkmışsın yüzden onları bazı görüntülerin döndürmek edelim
  3. Onları yeniden boyutlandırmak ve sonra upload

Ve benim rüya dünyasında, ücretsiz ve açık kaynak olurdu. Herhangi bir fikir?

Sadece bir hatırlatma: Bu misafirler kullanmak zorunda şeydir. Bazıları oldukça bilgisayar anlayışlı olacak ama diğerleri neredeyse tamamen cahil olacaktır. Masaüstü uygulamaları yükleyerek gerçekten bir seçenek değildir. Ve ben bunların% 98'i Flash ve Java yüklü varsayıyorum.

Düzenleme: = Ben şu anda küçük bir yüklemek oranı az değil çünkü, Silverlight üzerinde Flash / Java seçeneği tercih ediyorum, ama aynı zamanda Linux üzerinde yaşıyorum ve çünkü ben bunu test etmek isterim)

19 Cevap

Çoğu ücretsiz olmasa da, bu için en yaygın çözüm, bir java uygulaması. Örnekler:

I Gallery ile iyi bir şans oldu. Bu ücretsiz, açık kaynak ve bahsedilen tüm özelliklere sahiptir.

Bu kullanıcıların sizden herhangi bir müdahalesi olmadan fotoğraf yüklemek sağlayacak.

Başka bir seçenek insanlar (flickr, google, SmugMug, ya da başka) onlar kullanmaya ne olursa olsun hizmet etmek onların fotoğraf yüklemesine izin vermek için, ve sadece hizmet ya da klasör için bir URL için bir kullanıcı adı kabul edebilir.

Sonra da uygulamanın tutarlı bir arayüz ile yerel saklamak için bu resimlerin bir kopyasını kapmak olabilir.

Ben SWFUpload biraz kullandım. Oldukça etkileyici: http://www.swfupload.org/

Flash ile yapıyor ve Flickr kullanıyorsanız, o zaman ben AS3 Flickr kütüphane kontrol eder:

http://code.google.com/p/as3flickrlib/

hangi görüntü yüklemek için desteği vardır.

Yükle kimlik doğrulaması gerektirir. Kütüphanede ayrıca bu işleme için bir Flex tabanlı denetimi içerir:

http://www.mikechambers.com/blog/2008/08/12/flex-based-flickr-api-authorization-control/

(Kütüphanenin kalan ActionScript 3 ve Flex veya Flash kullanılabilir.

Muhtemelen en kolay çözüm sadece (şimdi Flickr yerleşik) Picnik'te düzenlenmiş Flickr'a yüklenen görüntüleri, sahip olduğu, ve sonra Flickr RSS beslemelerini veya API'leri kullanarak kullanıcıların siteye yüklenen:

http://www.flickr.com/help/picnik/

http://www.flickr.com/services/api/

yardımcı olur umarım ...

mike odaları

mesh@adobe.com

Ben bir uygulamasını kullanmak istiyorum. Sen resim boyutlandırma ve istemci tarafında dönen yapabilirdi.

JUpload sizin için bunu yapmak olabilir gibi görünüyor.

Sen de onları Picasa resimleri e-posta olabilir. Picasa web bir picasa hesabına onları yayınlayacağız "gizli" bir e-posta görüntüleri gönderebileceğiniz bir özelliği vardır. Bir picasa hesabı ayarlama "gizli" e-posta dağıtmak ve tüm resimleri göstermek için bekleyin.

Picasa oldukça büyük / ücretsiz bir fotoğraf yönetim uygulaması. Bu bazı oldukça etkileyici düzenleme yapmak edelim, ve yetenekleri karşıya olan, her yerde upload eğer ben hatırlayamıyorum ama, ya da sadece bazı popüler siteleri (Flickr gibi).

Eğer örneğin bir ilerleme çubuğu görüntüler yönetilen yüklenenler, izin Silverlight ya da Flash veya bazı özel eklenti kullanabilirsiniz. Orada kadar upload hızları hakkında yapabileceği değil, ama oluyor yaparken en azından onlara ilerleme gösterebilir.

Ben kullanabileceğiniz herhangi bir konserve yükleme programları bilmiyorum ama (Flash veya Silverlight bilmiyorum sürece) biri yapmak için çok zor olmamalı.

Nasıl PhotoShop Online Bu bir web tabanlı editörü ile fotoğraflarınızı düzenlemek için izin verir ve 2GB depolama sunuyor kullanma hakkında. Ben birden fazla kullanıcı için izin veriyorsa kendimi öylesine olsa aynı hesaba erişmek için bilmiyorum kullanmadım ettik

Meraktan, ne web yığını bu çalıştırmak için? LAMP? 2k3 + IIS? vs vs? Orada açık kaynak çözümleri birçok çapraz-platform vardır ama diğerleri değil ...

E-mailing the photo in kullanılabilir bir seçenek mi?

Fotoğrafları paylaşmak istiyorum Çoğu insan muhtemelen zaten e fotoğraf göndermek için biliyorum. Ve çoğu e-posta istemcileri zaten dosya yükleme sorunlarını çözmüştür.

Sadece kurulum bir / whatevermail hesabı gmail ve web sitenize anket kutusu var.

Bu TwitPic gereksinimleri bundan daha basit gibi görünüyor twitter için geliyor ama ne gibi bir şey.

Şahsen çoğu kullanıcı DPI anlamıyorum ve onların görüntüleri hatta çoğu hosting şirketleri izin için php.ini daha büyük ucunu yukarı aşağı kesilmiş.

Ben size kamu yan davranmasını istiyorum nasıl onlara vermek ya da ne kadar kontrol emin değilim.

Böyle O müşterilerine ücretsiz ve FTP bilgilerini kurmak ve güvenli böylece yalnızca sürümü için ödemek zorunda http://etonica.com/dropbox/index.html (tango dropbox) gibi bir dropbox bir FTP uygulamasını kullanarak öneririm.

Onları (FREE) şeydir bağlantı paint.net onlara uygun boyutta fotoğrafları düzenlemek ve daha sonra sadece sürükle ve bu uygulama onları bırakın gelmiş indirmek olurdu. kolay ve modifiye edilmesi php.ini gerektirmez.

Ayrıca SlideShowPro direktörü uygulaması gibi bir şey kullanabilirsiniz.

Ben tamamen, Zigdon katılıyorum farklı sitelere izin, ama sadece web fotoğraf pick up. Ben hala yüklenenler izin ve büyüklüğüne bir kap koymak istiyorum.

Eğer büyük bir şeyin içine kendinizi atmak istiyorsanız Şimdi, ben boyutuna bir kap koyarak ve ardından görüntüleri ile çalışmak için JQuery (ya da diğer kütüphane) kullanarak öneririm.

Sadece benim 2 sent

Flickr rota kolay oluyor ve iyi çalışacaktır.

Eğer daha ileri gitmek istiyorum, ben snipshot öneriyoruz veya picknik (Flickr bunu kullanır). Hem kullanımı API'lerini kullanan ve sahip ücretsizdir.

Web sunucusu bağlıdır. Eğer servlet'leriyle kullanabilirsiniz varsa, bu deneyin:

// UploadServlet.java : Proof of Concept - Mike Smith March 2006 // Accept a file from the client, assume it is an image, rescale it and save it to disk for later display import javax.servlet.http.; import javax.imageio.; import java.io.; import java.util.; import java.sql.; import org.apache.commons.fileupload.; import org.apache.commons.fileupload.disk.; import org.apache.commons.fileupload.servlet.; import java.awt.image.; import java.awt.;

public class UploadServlet {HttpServlet uzanır

public static void printHeader(PrintWriter pw)  {
    pw.println("<HEAD><TITLE>Upload Servlet</TITLE><HEAD>");
    pw.println("<BODY>");
}

public static void printTrailer(PrintWriter pw)  {
    pw.println("<img src=\"../images/poweredby.png\" align=left>");
    pw.println("<img src=\"../images/tomcat-power.gif\" align=right>");
    pw.println("</BODY></HTML>");
}


public void init()  {  // Servlet init() : called when the servlet is LOADED (not when invoked)
}

public void service(HttpServletRequest req, HttpServletResponse res)   throws IOException {
    DiskFileItemFactory dfifact;
    ServletFileUpload sfu; 
    java.util.List items;
    Iterator it;
    FileItem fi;
    String field, filename, contype;
    boolean inmem, ismulti;
    long sz;
    BufferedImage img;
    int width, height, nwidth, nheight, pixels;
    double scaling;
    final int MAXPIXELS = 350 * 350;

    res.setContentType("text/html");
    PrintWriter pw = res.getWriter();
    printHeader(pw);

    ismulti = FileUpload.isMultipartContent(req);
    if (ismulti)  {
        pw.println("Great! Multipart detected");
        dfifact = new DiskFileItemFactory(999999, new File("/tmp"));
        sfu = new ServletFileUpload(dfifact);
        try  {
            items = sfu.parseRequest(req);
        } catch (FileUploadException e)  {
            pw.println("Failed to parse file, error [" + e  + "]");
            printTrailer(pw);
            pw.close();
            return;
        }
        it = items.iterator();
        while (it.hasNext())  {
            fi = (FileItem) it.next();
            if (fi.isFormField())  {
                pw.println("Form field [" + fi.getFieldName() + "] value [" + fi.getString() + "]");
            }
            else  {  // Its an upload
                field = fi.getFieldName();
                filename = fi.getName();
                contype = fi.getContentType();
                inmem = fi.isInMemory();
                sz = fi.getSize();
                pw.println("Upload field=" + field + " file=" + filename + " content=" + contype + " inmem=" + inmem
                    + " size=" + sz);
               InputStream istream = fi.getInputStream();
               img = ImageIO.read(istream);
               nwidth = width = img.getWidth();
               nheight = height = img.getHeight();
               pixels = width * height;
               if (pixels > MAXPIXELS)  {
                   scaling = Math.sqrt((double) MAXPIXELS / (double) pixels);
                   nheight = (int) ((double) height * scaling);
                   nwidth = (int) ((double) width * scaling);
               }
               BufferedImage output = new BufferedImage(nwidth, nheight, BufferedImage.TYPE_3BYTE_BGR);
               Graphics2D g = output.createGraphics();
               g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
               g.drawImage(img, 0, 0, nwidth, nheight, null);
               ImageIO.write(output, "jpeg", new File("/var/tomcat/webapps/pioneer/demo.jpg"));
               istream.close(); 
            }
        }
    }
    else
        pw.println("Bugger! Multipart not detected");
        printTrailer(pw);
        pw.close();
}

public void destroy()  {
}

}

Ben şu anda Oli olarak benzer şartı uygulamak için gerekli.

Ben Facebook.com çeşit java uygulamasını kullanmak inanıyorum, ve oldukça iyi çalışır, ancak ben ÖSS gibi uygulama varsa emin değilim. Ben ScArcher2 önerdiği JUpload içine bakmak için gidiyorum.

Eğer adam yok başka iyi uygulaması geliyor tutun lütfen.

I highly Lussomo tarafından FileBrowser kullanarak öneririm. Bu 'sürükle ve bırak' kadar kolay: D

Sanırım 200 konsept sanat görüntüleri ham dökümü vardı benim oyun geliştirme ekibi için kullandım, ve biz sadece bir PHP-etkin sunucunuza FileBrowser ayıklanır ve uygun dizinleri (albüm başına 1) görüntüleri dökülüyor ve koştu thumbnailing komut dosyası. Bu görüntülerin kırpma, ve sizin için onların boyutunu optimize işler. Bir garip yükleme arayüzü üzerinden yüklemek zorunda Menalto Gallery gibi bir şey kullanarak çok daha iyi.

GIMP (http://www.gimp.org/) yeniden boyutlandırmak yapmak için iyi bir araçtır ve açık kaynak.