Каков наилучший способ обработки фотографий?

Я делаю сайт для свадьбы члена семьи. Функция, которую они запросили, была разделом фотографии, где все гости могли пойти после свадьбы и загрузить свои снимки. Я сказал, что это была звездная идея, и я отправился ее строить.

Ну есть только одна проблема: логистика. Скорость загрузки медленная, а фотографии с современных камер огромны (2-5 + Megs).

Мне нужны только изображения шириной ~ 800 пикселей, и некоторые из них могут потребовать вращения так идеально, что я ищу, используя редактор на стороне клиента, чтобы сделать три вещи:

  1. Пусть пользователи выбирают несколько файлов
  2. Позвольте им повернуть некоторые изображения, чтобы они вернулись вверх
  3. Измените их размер, а затем загрузите

И в мире моей мечты это было бы бесплатным и открытым исходным кодом. Есть идеи?

Просто напоминание: это то, что гости должны использовать. Некоторые из них будут достаточно компьютерными, но другие будут почти полностью неграмотными. Установка настольных приложений на самом деле не является вариантом. И я полагаю, что у 98% из них установлены Flash и Java.

Изменить: я предпочел бы вариант Flash / Java над SilverLight, не в последнюю очередь потому, что он имеет меньшую скорость установки на данный момент, но также потому, что я нахожусь в Linux, и я бы хотел проверить его =)

Solutions Collecting From Web of "Каков наилучший способ обработки фотографий?"

Наиболее распространенным решением для этого является Java-апплет, хотя большинство из них не являются бесплатными. Примеры:

Мне повезло с Галереей . Он бесплатный, с открытым исходным кодом и имеет все функции, о которых вы говорили.

Это позволит пользователям загружать фотографии без каких-либо вмешательств.

Другой вариант может состоять в том, чтобы позволить людям загружать свои фотографии в любой сервис, который они использовали для использования (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/

надеюсь, это поможет…

микрофонные камеры

mesh@adobe.com

Я бы использовал апплет. Вы можете сделать изменение размеров изображений и вращаться на стороне клиента.

Похоже, JUpload может сделать это за вас.

Picasa – отличное приложение для управления фотографиями. Это позволит вам сделать довольно впечатляющее редактирование и иметь возможности загрузки, хотя я не могу вспомнить, будет ли он загружаться в любую точку или только некоторые популярные сайты (например, Flickr).

Вы можете использовать Silverlight или Flash или какой-либо пользовательский плагин для управления управляемыми загрузками, где вы можете отображать индикатор выполнения, например. Существует не так много, что вы можете сделать о скорости загрузки, но вы можете хотя бы показать им прогресс, пока он происходит.

Я не знаю каких-либо программных программ, которые вы можете использовать, но это не должно быть слишком сложно сделать (если вы не знаете Flash или Silverlight).

Как об использовании PhotoShop Online Он позволяет редактировать фотографии с помощью веб-редактора и предлагает 2 ГБ памяти. Я не использовал его сам, поэтому не знаю, разрешает ли он нескольким пользователям доступ к одной и той же учетной записи, хотя

Из любопытства, на какой веб-стек это запускать? ЛАМПА? 2k3 + IIS? и т. д.? Многие из решений с открытым исходным кодом есть кросс-платформенные, но другие не …

Отправляет ли электронная почта фотографии в доступной опции?

Большинство людей, которые хотят делиться фотографиями, вероятно, уже знают, как отправлять фотографии по электронной почте. И большинство почтовых клиентов уже решили проблемы с загрузкой файлов.

Просто настройте одну учетную запись gmail / anymail и попросите свой веб-сайт опросить папку «Входящие».

Это что-то вроде того, что TwitPic делает для Twitter, но ваши требования кажутся более простыми.

Лично большинство пользователей не понимают DPI, и их изображения даже сокращаются в конечном итоге больше, чем php.ini для большинства хостинговых компаний.

Я не уверен, какой контроль вы хотите дать им или как вы хотите, чтобы общественная сторона вела себя.

Я бы предложил использовать FTP-приложение Dropbox, например http://etonica.com/dropbox/index.html (tango dropbox). Это бесплатно для ваших клиентов, и вам нужно заплатить только за свою версию, чтобы вы могли настроить информацию о FTP и закрепите его.

Я бы попросил их загрузить что-то ссылку paint.net (что БЕСПЛАТНО), чтобы они отредактировали фотографии до нужного размера, а затем просто перетащили их в это приложение. это легко и не требует изменения php.ini.

Вы также можете использовать что-то вроде приложения для слайдшоу.

Я полностью согласен с zigdon, разрешаю разные сайты, но только собираю фотографии из Интернета. Я все же хочу разрешить загрузку и установить ограничение по размеру.

Теперь, если вы хотите бросить себя во что-то большое, я бы предложил установить ограничение на размер, а затем использовать JQuery (или другую библиотеку) для работы с изображениями.

Только мои 2 цента

Вы также можете отправить их по электронной почте на пикасу. Веб-сайт Picasa имеет функцию, в которой вы можете отправлять изображения в «секретный» адрес электронной почты, который отправит их на учетную запись picasa. Настройте учетную запись picasa, распределите «секретную» электронную почту и дождитесь появления всех изображений.

Переход на маршрут Flickr прост и будет хорошо работать.

Если вы хотите перейти на более продвинутый уровень, я бы рекомендовал snipshot или picknik (Flickr использует его). Оба могут свободно использовать и использовать API.

В настоящее время мне необходимо выполнить аналогичное требование, как Oli.

Я считаю, что Facebook.com использует java-апплет какого-то рода, и он работает очень хорошо, но я не уверен, что апплет доступен как OSS. Я собираюсь изучить JUpload, предложенный ScArcher2.

Если у вас нет никакого другого хорошего апплета, пожалуйста, продолжайте его.

Я настоятельно рекомендую использовать FileBrowser от Lussomo. Это так же просто, как «перетаскивание»: D

Я использовал его для моей команды разработки игр, где у нас была сырая дампа из более чем 200 изображений концептуального искусства, и мы просто извлекли FileBrowser на веб-сервер с поддержкой PHP и сбросили изображения в соответствующие каталоги (по 1 на альбом) и запустили эскиз сценария. Он обрабатывает обрезку изображений и оптимизирует их размер для вас. Настолько лучше, чем использовать что-то вроде Menalto Gallery, где вы должны загружать их через неудобный интерфейс загрузки.

Зависит от веб-сервера. Если вы можете использовать сервлеты, попробуйте следующее:

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

GIMP ( http://www.gimp.org/ ) – хороший инструмент для изменения размера и является открытым исходным кодом.