我正在为一个家庭成员的婚礼做一个网站。 他们要求的一个功能是一个照片部分,所有的客人可以在婚礼后去上传他们的快照。 我说这是一个很棒的主意,我去建造它。

那么只有一个问题:物流。 上传速度很慢,现代相机的照片很大(2-5 + Megs)。

我只需要~800px宽的图像,其中一些可能需要旋转,所以理想情况下我正在寻找使用客户端编辑器做三件事:

  1. 让用户选择多个文件
  2. 让他们旋转一些图像,使它们正确向上
  3. 调整大小然后上传

在我的梦想世界中,它是免费的和开源的。 有任何想法吗?

提醒一下:这是客人必须使用的东西。 他们中的一些人会非常精通计算机,但其他人几乎完全是文盲。 安装桌面应用程序不是一个真正的选择。 我假设其中98%安装了Flash和Java。

编辑:我更喜欢SilverLight上的Flash / Java选项,不仅仅是因为它目前的安装率较低,而且因为我在Linux上并且我想测试它=)

===============>>#1 票数:4 已采纳

最常见的解决方案是java applet,尽管其中大多数都不是免费的。 例子:

===============>>#2 票数:4

我和Gallery好运。 它是免费的,开源的,并且具有您提到的所有功能。

它允许您的用户上传照片而无需您的任何干预。

===============>>#3 票数:4

另一种选择可能是允许人们将他们的照片上传到他们习惯使用的任何服务(flickr,google,smugmug或任何其他服务),并且只接受该服务的用户名或文件夹的URL。

然后,您可以让应用程序获取这些图片的副本,以便使用一致的界面在本地存储。

===============>>#4 票数:3

我已经使用了很多swfupload。 它非常棒: http//www.swfupload.org/

===============>>#5 票数:2

如果您使用Flash并使用Flickr执行此操作,那么我将查看AS3 Flickr库:

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中),然后使用Flickr RSS源或API加载到用户站点:

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

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

希望有帮助......

迈克室

mesh@adobe.com

===============>>#6 票数:2

我会用一个小程序。 您可以调整图片大小并在客户端进行旋转。

看起来JUpload可能会为你做这件事。

===============>>#7 票数:1

我目前需要实施与Oli类似的要求。

我相信Facebook.com使用某种类型的java applet,它运行得很好,但我不确定applet是否可用作OSS。 我将研究ScArcher2建议的JUpload。

如果你没有其他任何好的小程序,请保持它的到来。

===============>>#8 票数:1

强烈建议使用Lussomo的FileBrowser 它就像'拖放'一样简单:D

我已经将它用于我的游戏开发团队,在那里我们有超过200个概念艺术图像的原始转储,我们只是将FileBrowser提取到支持PHP的网络服务器并将图像转储到适当的目录中(每个专辑1个),然后运行缩略图。 它可以处理图像的裁剪,并为您优化尺寸。 比使用像Menalto Gallery这样的东西要好得多,你必须通过一个笨拙的上传界面上传它们。

===============>>#9 票数:1

试试这个http://www.lunarvis.com/products/tinymcefilebrowserwithupload.php

===============>>#10 票数:1

Picasa是一个非常好/免费的照片管理应用程序。 它让你做一些非常令人印象深刻的编辑,并具有上传功能,但我不记得它是否会上传到任何地方,或只是某些热门网站(如Flickr)。

===============>>#11 票数:1

您可以使用Silverlight或Flash或某些自定义插件来允许托管上传,例如,您可以在其中显示进度条。 关于上传速度你无能为力,但你至少可以在进行中显示进度。

我不知道你可以使用任何罐装上传程序,但它不应该太难(除非你不知道Flash或Silverlight)。

===============>>#12 票数:1

如何使用PhotoShop Online它允许您使用基于Web的编辑器编辑照片,并提供2GB的存储空间。 我自己没有使用它,所以不知道它是否允许多个用户访问同一个帐户

===============>>#13 票数:1

出于好奇,在这个网络堆栈上运行? 灯? 2K3 + IIS? 等等? 许多开源解决方案都是跨平台的,但其他解决方案不是......

===============>>#14 票数:1

是否通过电子邮件发送照片

大多数想要分享照片的人可能已经知道如何通过电子邮件发送照片。 大多数电子邮件客户端已经解决了文件上传的问题。

只需设置一个gmail / whatevermail帐户,让您的网站在收件箱中进行轮询。

这就像TwitPic为twitter做的那样,但你的要求似乎比这更简单。

===============>>#15 票数:1

个人大多数用户不理解DPI,他们的图像甚至被削减,最终比大多数托管公司允许的php.ini更大。

我不确定你想给他们多少控制权,或者你希望公众方面如何行事。

我建议使用Dropbox FTP应用程序,如http://etonica.com/dropbox/index.html (探戈保管箱)它对您的客户是免费的,您只需支付您的版本,以便您可以设置FTP信息并保护它。

我有他们下载的东西链接paint.net(这是免费的)让他们编辑照片到适当的大小,然后只需将它们拖放到这个应用程序。 它很简单,不需要修改php.ini。

你也可以使用像slideshowpro的导演应用程序这样的东西。

===============>>#16 票数:1

我完全同意zigdon,允许不同的网站,但只从网上获取照片。 我仍然希望允许上传,并设置上限。

现在,如果你想把自己扔进一个大的东西,我会建议对大小设置上限,然后使用JQuery(或其他库)来处理图像。

只需2美分

===============>>#17 票数:1

您也可以让他们通过电子邮件将照片发送到picasa。 Picasa网站有一项功能,您可以将图像发送到“秘密”电子邮件,然后将其发布到Picasa帐户。 设置一个picasa帐户,分发“秘密”电子邮件,并等待所有图片显示。

===============>>#18 票数:1

走Flickr路线很容易,效果很好。

如果你想更高级,我建议使用snipshotpicknik (Flickr使用它)。 两者都可以免费使用并且可以使用API​​。

===============>>#19 票数:1

取决于Web服务器。 如果您可以使用servlet,请尝试以下方法:

// 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()  {
}
}

===============>>#20 票数:-1

GIMP( http://www.gimp.org/ )是一个很好的调整大小的工具,是开源的。

  ask by Oli translate from so

未解决问题?本站智能推荐:

3回复

防止成人图像上传到照片网站的想法

我经营一个小型照片网站。 最近我注意到,上传的一些图像本质上是成人的。 如果可能的话,我需要一种简单的方法来阻止成人图像的上传。 任何想法都会有所帮助,谢谢。 此外,该网站使用相当多的PHP,JavaScript和Flash运行。 http://superlame.com
3回复

在照片上标记

在网站上,我们需要在照片上加上标记。 按类型(如在Facebook中)。 希望但不是必须选择的对象不是矩形和多边形。 有现成的吗? 使用php,flash和其他异国情调的技术都没关系,但这不是必需的:)
1回复

Java Applets的多种文件上传替代方案

除了Java Applets,多文件上传还有哪些其他选择? 它不必在Java中,它可以是Flash,PHP等。 我目前有一个网站,该网站使用Java Applet进行多文件上传; 但是,现在,Java阻止了未签名的小程序,这变得更加麻烦。 我发现我需要一个代码签名证书,每年必须付费。
2回复

使用网络摄像头或设备摄像头捕获照片

您好,最近我已经阅读了很多有关getusermedia() ,据我所知,此API在最终应用程序中使用并不可靠。 我想建立一个网页,允许用户拍摄照片或上传照片。 所以我需要其他选择。 从网络摄像头或设备摄像头捕获照片的最佳多平台(PC / Mac,iPad,iPhone,Android等
1回复

Flash图片上传和编辑

如何在ActionScipt 2(而不是3)中制作Flash图像上传器/编辑器? 我希望用户能够上传PNG或JPG图像,然后将其显示在屏幕上。 然后,他们可以对其进行裁剪,并在可能的情况下添加文本并使用其他常规编辑工具。 我对如何执行此操作有一个想法,但是在某些部分上我不太确定。 有任何
1回复

使用不同大小限制上传

我使用此插件(Flash版本)在IE 9及更低版本上上传文件。 现在,我允许所有文件扩展名,但是如果文件为csv,则最大可以为4.5Gb,其他则为500Mb。 我看了看php文件,但是大小验证不存在。 在哪里可以检查文件扩展名和大小以进行相关比较?
2回复

Uploadify不会将文件上传到我的PHP脚本!

我正在尝试让uploadify将其文件发送到php脚本,但是每次都会变空...我完全感到困惑,因为有时它甚至都不会尝试上传文件。 形成: 这是upload.ajax.php文件:关于它的注释:它需要会话才能正常工作,并且add_to_album可以完成所有缩略图的工作
1回复

Javascript调用Flash函数上传文件

我想知道我能否就以下最佳方法获得建议? 我目前正在从Javascript(使用jQuery)调用Flash AS3函数,此函数将上传已在此Flash文件中选择的文件。 然后,Flash上​​传该文件,并调用一个处理已处理文件的php文件(upload.php)。 这一切都很好。 但是
1回复

图片上传器,可以编辑图片顺序

我需要一个可以帮助我创建图像上载器的教程或代码,该图像上载器也可以用于编辑图像的顺序。
3回复

使用进度条上传Ajax / Flash文件?

我正在寻找一个简单的解决方案: 易于集成 允许多个文件上传 在上载文件时显示进度条 有任何想法吗? 我已经尝试过Swfupload,它真的很难整合。