Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.10.2016, 15:36
graf8787 вне форума Посмотреть профиль Отправить личное сообщение для graf8787 Найти все сообщения от graf8787
  № 1  
Ответить с цитированием
graf8787

Регистрация: Sep 2013
Сообщений: 1
По умолчанию Огромный BitmapData

Код AS3:
public static var i:int = 0;
public static var j:int = 0;
 
public function print(e:Event = null):void {
    try {
        var raw:BitmapData = new BitmapData(4000, 3000);
        var brr:ByteArray;
        raw.draw(SW12.webMap, new Matrix(1, 0, 0, 1, Config.sizeX - i * 4000, Config.sizeY - j * 3000));
        brr = PNGEncoder.encode(raw);
        new FileReference().save(brr, "x" + i + "y" + j + ".png");          
        i ++;
        if (i == 8) {
            i = 0;
            j ++;
        }
        if (j == 8) {
            j = 0;
        }
    } catch (e:Event) {
    }
}
приходится делать так, потому что BitmapData(4000, 3000) больше 16000000 пикселей не поддерживает. вопрос: как обойти?
Если не обойти, то как обойти на яве аналогичное ограничение у буфередимадж?

Код явы:
Код AS3:
try{
      BufferedImage read;
      BufferedImage result = new BufferedImage(32000,24000,BufferedImage.TYPE_INT_RGB);
      for(int x=0; x < 8; x ++) {
           for(int y=0; y < 8; y ++) {
               read = ImageIO.read(new File("c:\\temp\\1\\x"+x+"y"+y+".png"));
               result.getGraphics().drawImage(read,x * 4000, y * 3000,null);
           }
       }
       ImageIO.write(result,"png",new File("c:\\temp\\1\\result.png"));
   }catch(Exception e){
       e.printStackTrace();
   }

Старый 07.10.2016, 12:06
ALeXVoz вне форума Посмотреть профиль Отправить личное сообщение для ALeXVoz Посетить домашнюю страницу ALeXVoz Найти все сообщения от ALeXVoz
  № 2  
Ответить с цитированием
ALeXVoz
 
Аватар для ALeXVoz

Регистрация: Nov 2008
Адрес: Ukraine, Kyiv
Сообщений: 94
Отправить сообщение для ALeXVoz с помощью Skype™
Скорее всего придется выбрать другую технологию т.к. сами ограничения заложены в технологию.
Еще зависит от задачи. Может как то можно разбивать изображения на части и потом склеивать при необходимости.

Старый 08.10.2016, 10:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
больше 16000000 пикселей не поддерживает
Нет такого ограничения, уже давно. Сейчас размер битмап даты ограничен только наличием свободной оперативной памяти.
Но с другой стороны, это как раз и должно настораживать, так как конфигурация устройства, на котором это будут открывать может быть самой разной. Нужно архитектуру приложения пересмотреть. Чтобы там не было необзодимости делать такой большой растр.
п.с.
Цитата:
new File("c:\\temp\\1\\x"+x+"y"+y+".png")
Очень плохой подход - исползовать двойной слеш и абсолютные пути вместо переменных среды. Плюс джавы в ее кроссплатформенности. Но этот код будет работать только на винде.
Вместо двойного слеша нужно использовать File.separator, а пути брать из переменных среды системы, либо прописывать в конфиг файлы
__________________
Ко мне можно и нужно обращаться на ты)

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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