PDA

Просмотр полной версии : сохранение картинки частями


NikolyA
14.10.2011, 04:27
Доброго времени суток, нашел вот такой сервис: http://gpluspic.com/banner, хотелось бы узнать, как можно подобную манипуляцию по разбивке картинки, а затем ее сохранение, сделать флешовыми методами, если есть подобные реализации на флеше, поделитесь пожалуйста, так же хотелось бы знать что использовалось для разработки, видел в вконтакте приложения подобные так же, но в интернете примеров, исходных кодов, не нашел, подскажите куда смотреть? - только AS3 реализации, флекс тоже подойдет

GBee
14.10.2011, 08:21
BitmapData.draw

или

BitmapData.copyPixels

или

BitmapData.getPixels + BitmapData.setPixels

NikolyA
14.10.2011, 15:09
а что-то в плане реализаций, примеров, а то как работать с BitmapData я в курсе, а как сделать нечтно подобное, просто не знаю, а для работы нужно

GBee
14.10.2011, 15:29
что не знаете? как вырезать из картинки прямоугольник 5x на х и порезать на пять частей х на х?

goodguy
14.10.2011, 18:01
Блин, ну реализация же простейшая.
Набросал код за пять минут:

package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.Point;
import flash.geom.Rectangle;

public class BitmapSplitter extends Sprite {

[Embed(source = "beach.jpg")]
private var Beach: Class;
private var _beach: Bitmap = new Beach as Bitmap;
private var _numThumbs: int = 5;
private var _spacing: Number = 7; // расстояние между эскизами
private var _thumbHeight: Number = 70;
private var _thumbWidth: Number;
private var _thumbY: Number = 120; // вертикальный оффсет, в оригинальной картинке

public function BitmapSplitter() {
_thumbWidth = _beach.width / _numThumbs - _spacing * (_numThumbs - 1);
for (var i:int = 0; i < _numThumbs; i++) {
var thumbX:Number = i * (_thumbWidth + _spacing);
var thumb:Bitmap = new Bitmap(new BitmapData(_thumbWidth, _thumbHeight, false, Math.random() * 100000000));
thumb.bitmapData.copyPixels(_beach.bitmapData, new Rectangle(thumbX, _thumbY, _thumbWidth, _thumbHeight), new Point());
thumb.x = thumbX;
thumb.y = _thumbY;
addChild(thumb);
}
}
}
}


Так же можно и сохранение прикрутить к этому. Например в массив все картинки затолкать, и пердать его классу, выполняющему сохранение куда нужно, или прямо из цикла сохранять

NikolyA
14.10.2011, 19:46
goodguy спасибо, дальше с сохранением уже сам