11

家族の結婚式のウェブサイトをやっています。彼らが要求した機能は、すべてのゲストが結婚式の後に行ってスナップをアップロードできる写真セクションでした. 私はこれは素晴らしいアイデアだと言い、それを構築するために出発しました。

問題は 1 つだけです。ロジスティクスです。アップロード速度は遅く、最新のカメラからの写真は巨大です (2-5+メガ)。

必要なのは幅が 800px までの画像だけで、一部は回転が必要になる可能性があるため、理想的には、クライアント側のエディターを使用して次の 3 つのことを行うことを検討しています。

  1. ユーザーが複数のファイルを選択できるようにする
  2. 正しい方向になるように、いくつかの画像を回転させます
  3. サイズを変更してからアップロード

そして私の夢の世界では、それは無料でオープンソースです. 何か案は?

注意: これはゲストが使用する必要があるものです。かなりコンピューターに精通している人もいますが、ほとんど完全に読み書きができない人もいます。デスクトップ アプリをインストールすることは、実際にはオプションではありません。そして、それらの 98% には Flash と Java がインストールされていると思います。

編集:SilverLight よりも Flash/Java オプションの方が好ましいと思います。現時点ではインストール率が低いだけでなく、Linux を使用していてテストしたいからです =)

4

20 に答える 20

4

私はギャラリーで幸運を祈りました。これは無料のオープンソースであり、あなたが言及したすべての機能を備えています。

それはあなたのユーザーがあなたの介入なしに写真をアップロードすることを可能にします。

于 2008-09-16T16:43:00.063 に答える
4

もう1つのオプションは、ユーザーが使い慣れているサービス(flickr、google、smugmugなど)に写真をアップロードし、そのサービスのユーザー名またはフォルダーのURLを受け入れることです。

次に、アプリケーションでこれらの画像のコピーを取得して、一貫性のあるインターフェイスでローカルに保存することができます。

于 2008-09-16T16:44:47.687 に答える
4

これに対する最も一般的な解決策は Java アプレットですが、それらのほとんどは無料ではありません。例:

于 2008-09-27T23:05:29.970 に答える
3

私はswfuploadをかなり使ってきました。それはかなり素晴らしいです: http://www.swfupload.org/

于 2008-09-16T17:20:54.403 に答える
2

FlashとFlickrを使用してこれを行っている場合は、AS3Flickrライブラリを確認します。

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

画像のアップロードをサポートしています。

アップロードには認証が必要です。ライブラリには、これを処理するためのFlexベースのコントロールも含まれています。

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

(ライブラリの残りの部分はActionScript 3であり、FlexまたはFlashで使用できます。

おそらく最も簡単な解決策は、画像をFlickrにアップロードし、Picnikで編集して(現在はFlickrに組み込まれています)、FlickrRSSフィードまたはAPIを使用してユーザーサイトにロードすることです。

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

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

それが役立つことを願っています...

マイクチャンバー

mesh@adobe.com

于 2008-09-16T16:49:03.683 に答える
2

アプレットを使用します。クライアント側で写真のサイズ変更と回転を行うことができます。

JUploadがこれを行うようです。

于 2008-09-16T17:19:33.563 に答える
1

PhotoShop Onlineの使用方法Webベースのエディターで写真を編集でき、2GBのストレージを提供します。私自身は使ったことがないので、複数のユーザーが同じアカウントにアクセスできるかどうかはわかりませんが

于 2008-09-16T16:43:44.103 に答える
1

好奇心から、これはどのWebスタックで実行されますか?ランプ?2k3 + IIS?などなど?そこにあるオープンソースソリューションの多くはクロスプラットフォームですが、他のソリューションはそうではありません...

于 2008-09-16T16:44:41.930 に答える
1

写真を電子メールで送信することはできますか?

写真を共有したいほとんどの人は、おそらくすでに電子メールで写真を送信する方法を知っています。そして、ほとんどの電子メールクライアントはすでにファイルアップロードの問題を解決しています。

1つのGmail/whatevermailアカウントを設定し、Webサイトに受信トレイをポーリングさせるだけです。

これはTwitPicがTwitterに対して行うことのようなものですが、要件はそれよりも単純なようです。

于 2008-09-16T16:48:24.420 に答える
1

私は現在、Oliと同様の要件を実装する必要があります。

Facebook.comはある種のJavaアプレットを使用していると思います。それはかなりうまく機能しますが、アプレットがOSSとして利用できるかどうかはわかりません。ScArcher2によって提案されたJUploadを調べます。

他に良いアプレットがない場合は、これからも続けてください。

于 2008-09-25T00:12:38.597 に答える
1

これを試してみて ください http://www.lunarvis.com/products/tinymcefilebrowserwithupload.php

于 2009-01-31T21:21:46.750 に答える
1

個人的には、ほとんどのユーザーは DPI を理解しておらず、画像をトリミングしても、ほとんどのホスティング会社が許可する php.ini よりも大きくなります。

あなたが彼らにどの程度の制御を与えたいのか、または公共側にどのように振る舞わせたいのか、私にはわかりません.

http://etonica.com/dropbox/index.html (tango dropbox)などのドロップボックス FTP アプリケーションを使用することをお勧めします。クライアントは無料で、バージョンの料金を支払うだけで FTP 情報をセットアップできます。そして確保します。

私は彼らに何かリンクpaint.net(無料)をダウンロードしてもらい、写真を適切なサイズに編集してもらい、このアプリケーションにドラッグアンドドロップするだけです. 簡単で、php.ini を変更する必要はありません。

また、slideshowpro のディレクター アプリケーションのようなものを使用することもできます。

于 2008-09-16T16:52:25.487 に答える
1

写真を Picasa にメールで送信することもできます。Picasa ウェブには、picasa アカウントに投稿する「秘密の」メールに画像を送信できる機能があります。Picasa アカウントを設定し、「秘密の」メールを配信して、すべての写真が表示されるのを待ちます。

于 2008-09-16T17:05:17.373 に答える
1

Flickr ルートへの移行は簡単で、うまく機能します。

もっと高度にしたい場合は、snipshotまたはpicknikをお勧めします (Flickr が使用しています)。どちらも無料で使用でき、使用する API があります。

于 2008-09-17T00:15:22.863 に答える
1

Web サーバーに依存します。サーブレットを使用できる場合は、これを試してください:

// 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 extends HttpServlet  {

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()  {
}
}
于 2008-09-17T05:11:07.113 に答える
1

LussomoのFileBrowserを使用することを強くお勧めします。「ドラッグアンドドロップ」と同じくらい簡単です:D

私はゲーム開発チームで 200 を超えるコンセプト アート画像の未加工のダンプを使用しており、単純に FileBrowser を PHP 対応の Web サーバーに抽出し、画像を適切なディレクトリ (アルバムごとに 1 つ) にダンプし、サムネイル作成スクリプト。画像のトリミングとサイズの最適化を処理します。厄介なアップロード インターフェイスを介してアップロードする必要がある Menalto Gallery のようなものを使用するよりもはるかに優れています。

于 2008-09-27T23:15:31.850 に答える
1

私は zigdon に完全に同意し、さまざまなサイトを許可しますが、Web からのみ写真をピックアップします。アップロードを許可し、サイズに上限を設けたいと思います。

さて、大きなものに身を投じたい場合は、サイズに上限を設けてから、JQuery (または他のライブラリ) を使用して画像を処理することをお勧めします。

ちょうど私の2セント

于 2008-09-16T17:02:26.460 に答える
1

Picasaは非常に優れた無料の写真管理アプリです。かなり印象的な編集を行うことができ、アップロード機能もありますが、どこにでもアップロードできるのか、特定の人気のあるサイト (Flickr など) だけにアップロードできるのかは覚えていません。

于 2008-09-16T16:39:18.030 に答える
1

Silverlight、Flash、またはカスタム プラグインを使用して、たとえば進行状況バーを表示できるマネージド アップロードを許可できます。アップロード速度についてできることはあまりありませんが、少なくとも進行中に進行状況を表示することはできます.

使用できる定型アップロード プログラムを私は知りませんが、それを作成するのはそれほど難しいことではありません (Flash や Silverlight を知らない場合を除きます)。

于 2008-09-16T16:40:17.713 に答える
-1

GIMP(http://www.gimp.org/)は、サイズ変更を行うための優れたツールであり、オープンソースです。

于 2008-09-16T16:42:29.317 に答える