В TypeScript все работает иначе, чем в JavaScript, если вы передадите аргумент любого другого типа, отличного от того, который указан в сигнатуре функции, вы получите ошибку во время компиляции, и, следовательно, вы обязаны точно следовать типу аргументов функции.
Одна из лучших страниц, описывающих алгоритмы поворота изображения, которые я нашел в Интернете, связывается с Dan Bloomberg превосходный leptonica библиотека. В то время как сама leptonica библиотека записана в C и не поможет Вам, его странице на алгоритмах поворота изображения:
http://www.leptonica.org/rotation.html
определенно стоит чтения. Вы, скорее всего, захотите реализовать что-то как Вращение алгоритмом Отображения области, который он описывает во второй части страницы.
Общее решение: Для каждого пикселя в конечном изображении, возьмите пиксель в исходном изображении с координатами целевого пикселя, повернутого в противоположном направлении.
Улучшение к решению: вращение обычно не будет давать точные пиксельные координаты. Сделайте взвешенное среднее исходного пикселя с его соседями, согласно проценту, это перекрывает их.
Более быстрое решение для двухуровневых изображений: Преобразовывают изображение в "выполнения" последовательных приоритетных пикселей. Тогда поверните конечные точки этих строк и вовлеките их в место назначения.
Обычно это произведет небольшие разрывы из-за целочисленного округления, поэтому когда одна или обе конечных точки будут на расстоянии больше чем в 10% от целого числа, патча путем проведения ДВУХ линий для единственной исходной строки, использования целочисленных координат, округленных вверх и вниз.
, Если одна конечная точка в 10% и другой, не, эти две строки сформируются 'V' форма. Если оба будут выключены больше чем на 10%, то эти две строки сформируются 'X' форма.
Это может быть сделано относительно оси X или оси Y. Используйте тот с самым маленьким углом между осью и углом вращения. (Т.е. если угол вращения между 45 и-45, используйте ось X.)
Еще более быстрое решение для двухуровневых изображений: , Если существует меньше фоновых пикселей, чем приоритетные пиксели, заполните место назначения передним планом и следуйте вышеупомянутому алгоритму с фоновыми пикселями.
Форумы Nokia имеют статью и код Вращающиеся Изображения в Java ME
LWUIT может сделать это, и это - открытый исходный код. Я предлагаю, чтобы Вы нашли код там.
Начало работы с мобильной 2D графикой для J2ME: http://developers.sun.com/mobility/midp/articles/s2dvg/index.html
http://j2mepolish.org/javadoc/j2me/de/enough/polish/util/ImageUtil.html
Graphics2D и AffineTransform помогут Вам сделать точно, что Вы хотите. А именно, Graphics2D.drawImage (Изображение, AffineTransform) и AffineTransform.getRotateInstance. Можно также сделать масштабирование, перевод и сдвиг с этим. Оба класса были во времени выполнения по крайней мере начиная с 1,4, вероятно, ранее.
You can try http://www.j2mearmyknife.com/ . It features a lot of cool visual effects, including image rotation.
public Image rotateImage(Image img, float degrees){
BufferedImage sourceBI = new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_ARGB);
sourceBI.getGraphics().drawImage(img,0,0,null);
AffineTransform at = new AffineTransform();
at.rotate(degrees*Math.PI/180, sourceBI.getWidth()/2, sourceBI.getHeight()/2);
BufferedImageOp bio = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
return bio.filter(sourceBI, null);
}