Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Сохранение изображения из Flash (http://www.flasher.ru/forum/showthread.php?t=127779)

zloiolz 23.07.2009 05:31

Сохранение изображения из Flash
 
В общем суть вопроса в следующем.
Какой код прописать в html или Flash компонентах, что бы к примеру из Flash галереи можно было сохранять изображения?(правой кнопкой) или же добавить кнопку скачать?

dimarik 25.07.2009 21:54

добавьте кнопку скачать. из флеш галереи нельзя сохранять изображения.

zloiolz 28.07.2009 00:35

А монжо поподробнее? Как связать кнопку с изображением? Какие команды ?

Vit_001 07.10.2009 23:45

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

mooncar 08.10.2009 01:36

Вложений: 1
Можно и правой кнопкой. Для галерей, где картинки грузятся из внешних файлов. Правда, несколько сложновато и в принципе, это эмуляция. Но все-таки...

Вот рабочий пример:http://www.us-pro.ru/mooncar/context...ntexMenu2.html
Кликаем правой кнопкой мыши на картинке во флешке, выбираем соответствующий пункт меню, и сохраняем картинку к себе на комп.

В двух словах -
1) Флеш - назначается отдельное кастомизированное контекстное меню флеш-плеера на контейнер-мувик с загруженной картинкой. А вне области картинки работает общее меню.
2) Сервер - в качестве ссылки на картинку вызывается php-скрипт, который принимает URL картинки, генерит на ее основе копию, отдает JPG, форсируя при этом вызов диалогового меню через заголовки.

Флеш:
Код AS1/AS2:

var picURL:String = 'pic1.jpg';
//грузим картинку
var cont:MovieClip = this.createEmptyMovieClip('cont_mc', this.getNextHighestDepth()); //контейнер для картинки
this.onLoadInit = function(target:MovieClip) {
        target.picURL = picURL; //запоминаем URL картинки внутри ее контейнера (пригодится для вызова через getURL в функции вызова сохранения)
        target.menu = menu_cm; //назначаем контейнеру с картинкой  индивид. контекстн. меню (см. в конце)
}
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(this); //слушатель - сам _level0
loader.loadClip(picURL, cont);
 
//вызов скрипта сохранения картинки
function doSave(mc:Object):Void {
        //вызываем и передаем скрипту url файла. Тут  _self в target-параметре, чтобы браузер не дергался, а также в записи не используем параметр метода -  GET.
        getURL('forcesave.php?picurl=' + mc.picURL, '_self');
}
 
//"общее" контекстное меню флеш-плеера, эти действия нужны только для скрытия системных пунктов
var cmMain:ContextMenu = new ContextMenu();
cmMain.hideBuiltInItems();
this.menu = cmMain;
 
//определяем язык операционной системы на компе пользователя
var lang:String = System.capabilities.language ;
var textForItemMenu:String; //текст для пункта меню
switch (lang) {
        case 'ru':
                textForItemMenu        = 'Сохранить изображение как...';
        break ;
        case 'en':
                textForItemMenu        = 'Save image as...';
        break ;
}
 
//формируем меню для мувика
var menu_cm:ContextMenu = new ContextMenu();
menu_cm.hideBuiltInItems();
menu_cm.customItems.push(new ContextMenuItem(textForItemMenu, doSave));

Вызываемый скрип для отдачи картинки, PHP:
PHP код:

<?php
$picurl 
$_GET['picurl'];
$im=imagecreatefromjpeg($picurl);
header("Content-type: application/applefile"); //так ли сильно это нужно  - не уверен, с учетом присутствия нижней строчки
header("Content-Disposition: attachment; filename=$picurl"); //форсируем отображение браузером диалога save.
imagejpeg($im""100);
imagedestroy($im);
?>

Думаю что код можно приспособить в любую галерею, где есть загрузка внешних файлов картинок. Просто в вашей галерее, в методе onLoadInit нужно добавить будет код для присвоения индивидуального меню, как в примере. Если фоток много - делаете loadClip и создание контейнеров, например, в цикле.
Кстати, возможно было бы и проще реализовать скачивание с учетом форсирования диалогового окна? Не силен в PHP.
Естественно, можно расширить поддержку разных типов файлов изображений в скрипте PHP.

Можно в скрипте легко ввести авторизацию на скачивание, задав проверку сессионной переменной-идентификатора пользователя, например для скачивания полноразмерных фоток:
PHP код:

session_start();
if (
$_SESSION['userid']) {
  
$picurl $_GET['picurl'];
  
$im=imagecreatefromjpeg($picurl);
  
header("Content-type: application/applefile");
  
header("Content-Disposition: attachment; filename=$picurl");
  
imagejpeg($im""100);
  
imagedestroy($im);
} else {
  echo 
'Скачивание доступно только для авторизванных пользователей';



Vit_001 09.10.2009 15:07

mooncar, очень спасибо.
ps.
Век живи - век учись.


Часовой пояс GMT +4, время: 19:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.