Показать сообщение отдельно
Старый 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();
   }