Ответ 1
Наиболее распространенным решением для этого является Java-апплет, хотя большинство из них не являются бесплатными. Примеры:
Я делаю сайт для свадьбы членов семьи. Функция, которую они запросили, была разделом фотографии, где все гости могли пойти после свадьбы и загрузить свои снимки. Я сказал, что это была звездная идея, и я отправился ее строить.
Ну, только одна проблема: логистика. Скорость загрузки медленная, а фотографии с современных камер огромны (2-5 + Megs).
Мне понадобятся только изображения шириной 800 пикселей и некоторые из них могут потребовать вращения таким образом, что я ищу, используя редактор на стороне клиента, чтобы сделать три вещи:
И в мире моей мечты это было бы бесплатным и открытым исходным кодом. Любые идеи?
Просто напоминание: это то, что гости должны использовать. Некоторые из них будут достаточно компьютерными, но другие будут почти полностью неграмотными. Установка настольных приложений на самом деле не является вариантом. И я предполагаю, что у 98% из них установлены Flash и Java.
Изменить: я предпочел бы вариант Flash/Java над SilverLight, не в последнюю очередь потому, что он имеет меньшую скорость установки на данный момент, но также потому, что я нахожусь в Linux, и я бы хотел протестировать его =)
Наиболее распространенным решением для этого является Java-апплет, хотя большинство из них не являются бесплатными. Примеры:
Мне повезло с Gallery. Он бесплатный, с открытым исходным кодом и имеет все функции, о которых вы говорили.
Это позволит пользователям загружать фотографии без каких-либо вмешательств.
Другой вариант может состоять в том, чтобы позволить людям загружать свои фотографии в любую службу, к которой они привыкли использовать (flickr, google, smugmug или любой другой), и просто принять имя пользователя для этой службы или URL для этой папки,
Затем вы можете заставить ваше приложение захватить копию этих изображений для локального хранения с помощью согласованного интерфейса.
Я использовал swfupload совсем немного. Это довольно удивительно: http://www.swfupload.org/
Если вы делаете это со 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/
надеюсь, что это поможет...
микрофонные камеры
Я бы использовал апплет. Вы можете сделать изменение размеров изображений и вращаться на стороне клиента.
Похоже, JUpload может сделать это для вас.
Picasa - это довольно простое/бесплатное приложение для управления фотографиями. Это позволяет вам делать довольно впечатляющее редактирование и имеет возможности загрузки, хотя я не могу вспомнить, будет ли он загружаться в любую точку или только некоторые популярные сайты (например, Flickr).
Вы можете использовать Silverlight или Flash или какой-либо пользовательский плагин для управления управляемыми загрузками, где вы можете отображать индикатор выполнения, например. Существует не так много, что вы можете сделать о скорости загрузки, но вы можете хотя бы показать им прогресс, пока он продолжается.
Я не знаю никаких программ для консервированных загрузок, которые вы можете использовать, но это не должно быть слишком сложно сделать (если вы не знаете Flash или Silverlight).
Как насчет использования PhotoShop Online Он позволяет редактировать фотографии с помощью веб-редактора и предлагает 2 ГБ хранилища. Я не использовал его сам, поэтому не знаю, разрешает ли он нескольким пользователям получать доступ к одной и той же учетной записи, хотя
Из любопытства, какой веб-стек нужно запустить? ЛАМПА? 2k3 + IIS? и т.д.? Многие из решений с открытым исходным кодом есть кросс-платформенные, но другие не...
Является ли электронной рассылкой фотографии в доступной опцией?
Большинство людей, которые хотят обмениваться фотографиями, уже знают, как отправлять фотографии по электронной почте. И большинство почтовых клиентов уже решили проблемы с загрузкой файлов.
Просто настройте одну учетную запись gmail/anymail и проверите свой веб-сайт в папке "Входящие".
Это что-то вроде TwitPic для твиттера, но ваши требования кажутся более упрощенными.
Лично большинство пользователей не понимают DPI, и их изображения даже обрезаются в конечном итоге больше, чем php.ini для большинства хостинговых компаний.
Я не уверен, какой контроль вы хотите дать им или как вы хотите, чтобы общественная сторона вела себя.
Я бы предложил использовать приложение FTP с Dropbox, например http://etonica.com/dropbox/index.html (tango dropbox). Это бесплатно для ваших клиентов, и у вас есть только для оплаты вашей версии, чтобы вы могли настроить информацию о FTP и защитить ее.
Я бы попросил их загрузить что-то ссылку paint.net(что БЕСПЛАТНО), чтобы они отредактировали фотографии до нужного размера, а затем просто перетащили их в это приложение. это легко и не требует изменения php.ini.
Вы также можете использовать что-то вроде приложения-разработчика slideshowpro.
Я полностью согласен с zigdon, разрешаю разные сайты, но только собираю фотографии из Интернета. Я все же хочу разрешить загрузку и установить ограничение по размеру.
Теперь, если вы хотите бросить себя во что-то большое, я бы предложил установить ограничение на размер, а затем использовать JQuery (или другую библиотеку) для работы с изображениями.
Только мои 2 цента
Вы также можете отправить их по электронной почте на picasa. Веб-сайт Picasa имеет функцию, в которой вы можете отправлять изображения в "секретный" адрес электронной почты, который отправит их на учетную запись picasa. Настройте учетную запись picasa, распределите "секретную" электронную почту и дождитесь появления всех изображений.
Переход на маршрут Flickr прост и будет хорошо работать.
Если вы хотите перейти более продвинутым, я бы рекомендовал snipshot или picknik (использует Flickr). Оба могут свободно использовать и использовать API.
Зависит от веб-сервера. Если вы можете использовать сервлеты, попробуйте следующее:
// 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() {
}
}
В настоящее время мне необходимо выполнить аналогичное требование, как Oli.
Я считаю, что Facebook.com использует java-апплет какого-то типа, и он работает очень хорошо, но я не уверен, доступен ли апплет как OSS. Я собираюсь изучить JUpload, предложенный ScArcher2.
Если у вас нет другого хорошего апплета, пожалуйста, продолжайте его.
Я бы предложил высоко использовать FileBrowser от Lussomo. Это так же просто, как "перетаскивание": D
Я использовал его для своей команды разработчиков игр, где у нас была сырая дамп более 200 изображений концептуального искусства, и мы просто извлекли FileBrowser на веб-сервер с поддержкой PHP и сбросили изображения в соответствующие каталоги (по 1 на альбом), и выполнил миниатюру script. Он обрабатывает обрезку изображений и оптимизирует их размер для вас. Настолько лучше, чем использовать что-то вроде Menalto Gallery, где вы должны загружать их через неудобный интерфейс загрузки.
Попробуйте это http://www.lunarvis.com/products/tinymcefilebrowserwithupload.php
GIMP (http://www.gimp.org/) является хорошим инструментом для изменения размера и является открытым исходным кодом.