Наиболее распространенным решением для этого является апплет Java, хотя большинство из них не свободно. Примеры:
GIMP (http://www.gimp.org/) является хорошим инструментом для того, чтобы сделать, изменяют размер, и открытый исходный код.
Зависит от веб-сервера. Если можно использовать сервлеты, попробуйте это:
// 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() {
}
}
Хождение путем Flickr легко и будет работать хорошо.
Если бы Вы хотите пойти более усовершенствованные, я рекомендовал бы snipshot, или пикник (Flickr использует его). Оба свободны использовать и иметь API для использования.
Я в настоящее время обязан реализовывать подобное требование как Oli.
Я полагаю, что Facebook.com использует какой-то апплет Java, и он работает вполне прилично, но я не уверен если апплет, доступный как OSS. Я собираюсь изучить JUpload, предложенный ScArcher2.
Если Вы парень никакой какой-либо другой хороший апплет сохраните это прибытием.
Я высоко предложил бы использовать FileBrowser Lussomo. Это столь же легко как 'перетаскивание' :D
Я использовал его для своей команды разработки игр, где у нас был необработанный дамп более чем 200 изображений искусства понятия, и мы просто извлекли FileBrowser к PHP-поддерживающему веб-серверу и вывели изображения в соответствующих каталогах (1 на альбом) и запустили thumbnailing скрипт. Это обрабатывает обрезку изображений и оптимизацию их размера для Вас. Настолько лучше, чем использование чего-то как галерея Menalto, где необходимо загрузить их через неловкий интерфейс загрузки.
У Вас могли также быть они, посылают изображения по электронной почте к picasa. Сеть Picasa имеет функцию, куда можно отправить изображения в "секретное" электронное письмо, которое отправит их на picasa счет. Создайте picasa учетную запись, распределите "секретную" электронную почту и ожидайте всех изображений для разоблачения.
Действительно ли пользование электронной почтой является фотографией в доступном варианте?
Большинство людей, которые хотят обменяться фотографиями, вероятно, уже, знает, как отправить фотографии в электронном письме. И большинство почтовых клиентов уже решило проблемы загрузки файла.
Просто установите одну учетную запись gmail/whatevermail и имейте Ваш опрос веб-сайта ящик входящих сообщений.
Это - что-то как то, что TwitPic делает для Твиттера, но Ваши требования, кажется, более более просты, чем это.
Лично большинство пользователей не понимает DPI, и их изображения, даже обрезанные вниз, заканчиваются больше, чем php.ini для большинства хостинговых компаний позволяет.
Я не уверен, сколько контроля Вы хотите дать им или как Вы хотите, чтобы общедоступная сторона вела себя.
Я предложил бы использовать приложение FTP Dropbox, такое как http://etonica.com/dropbox/index.html (танго Dropbox), Это свободно Вашим клиентам, и только необходимо заплатить за версию, таким образом, можно настроить информацию о FTP и защитить ее.
Я сделал бы, чтобы они загрузили что-то, связывают paint.net (который СВОБОДЕН), сделали их отредактировать фотографии к надлежащему размеру и затем просто перетащить их к этому приложению. это легко и не требует, чтобы php.ini был изменен.
Вы могли также использовать что-то как приложение директора slideshowpro.
Я, которого completly согласовывают с zigdon, позволяю различные сайты, но только поднимаю фотографии с сети. Я Вы все еще хотите позволить загрузки и поместить ограничение на размер.
Теперь, если бы Вы хотите броситься во что-то большое, я предложил бы поместить ограничение на размер и затем использовать JQuery (или другая библиотека) для работы с изображениями.
Просто мои 2 цента
Как насчет того, чтобы использовать PhotoShop Онлайн Это позволяет Вам редактировать фотографии с веб-редактором и предлагает 2 ГБ устройства хранения данных. Я не использовал его сам, так не знайте, позволяет ли это, чтобы многочисленные пользователи получили доступ к той же учетной записи хотя
Вы могли использовать Silverlight или Flash или некоторый пользовательский плагин для разрешения управляемых загрузок, где можно отобразить индикатор выполнения, например. Нет очень, можно сделать о скоростях загрузки, но можно, по крайней мере, показать им прогресс, в то время как он продолжается.
Я не знаю ни о каких консервированных программах загрузки, которые можно использовать, но не должно быть слишком трудно сделать одно (если Вы не знаете Flash или Silverlight).
Picasa является довольно большим/свободным фото приложением управления. Это позволяет нам, Вы делаете некоторое довольно впечатляющее редактирование, и имеет возможности загрузки, хотя я не могу помнить, загрузит ли это на где-нибудь, или просто определенные популярные сайты (как Flickr).
Я использовал бы апплет. Вы могли сделать изменение размеров изображений и вращение на стороне клиента.
Похоже, что JUpload может сделать это для Вас.
Если бы Вы делаете это с 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 теперь), и затем загруженный на пользовательский сайт с помощью или каналов RSS Flickr или API:
http://www.flickr.com/help/picnik/
http://www.flickr.com/services/api/
надежда, которая помогает...
камеры микрофона
mesh@adobe.com
Я использовал swfupload вполне немного. Это является довольно потрясающим: http://www.swfupload.org/
Другая опция могла состоять в том, чтобы позволить людям загружать свои фотографии на любой сервис, который они привыкли использовать (flickr, Google, smugmug, или любой другой), и просто принимают имя пользователя для того сервиса или URL для папки.
Затем у Вас может быть свой захват приложения копия тех изображений для хранения локально последовательным интерфейсом.
Мне везло с Галереей. Это свободно, с открытым исходным кодом, и имеет все функции, которые Вы упомянули.
Это позволит Вашим пользователям загружать фотографии без любого вмешательства от Вас.
Из любопытства, на том, какой веб-стек это должно выполнить? ЛАМПА? 2k3+IIS? и т.д. и т.д.? Многие решения с открытым исходным кодом там являются межплатформенными, но другие не...