我对黑莓有点陌生。我有一个图像,我需要根据用户的输入旋转到一定程度。我尝试过搜索,但似乎找不到任何东西。任何人都可以指出我正确的方向吗?
问问题
392 次
3 回答
1
有一个J2ME 军刀库,检查一下。
它也包含旋转功能。
于 2012-08-25T11:06:12.427 回答
1
这是 Blackberry 知识库文章的一部分。将您的位图和角度传递给此函数以获取旋转位图。
public static Bitmap rotate(Bitmap oldImage) throws Exception
{
int w = oldImage.getWidth();
int h = oldImage.getHeight();
int d = Math.max(w, h);
int amountPxAdded = 0;
if (w > h) {
amountPxAdded = w - h;
}
Bitmap oldBitmapSquared = new Bitmap(d, d);
int[] data = new int[w * h];
oldImage.getARGB(data, 0, w, 0, 0, w, h);
oldBitmapSquared.setARGB(data, 0, w, 0, 0, w, h);
Bitmap finalRes = new Bitmap(h, w);
int fW = finalRes.getWidth();
int fH = finalRes.getHeight();
oldImage = null;
Bitmap rotated = rotateSquareImage(oldBitmapSquared, <Angle>);
oldBitmapSquared = null;
data = new int[fW * fH];
rotated.getARGB(data, 0, fW, amountPxAdded, 0, fW, fH);
rotated = null;
finalRes.setARGB(data, 0, fW, 0, 0, fW, fH);
return finalRes;
}
private static Bitmap rotateSquareImage(Bitmap oldB, int angle) throws Exception {
int w = oldB.getWidth();
int h = oldB.getHeight();
Bitmap newB = new Bitmap(w, h);
int[] oldD = new int[w * h];
int[] newD = new int[w * h];
oldB.getARGB(oldD, 0, w, 0, 0, w, h);
int[][] old2d = new int[h][w];
int[] js;
int old2dLen = old2d.length;
int jsLen;
for (int i = 0; i < old2dLen; i++) {
js = old2d[i];
jsLen = js.length;
for (int j = 0; j < jsLen; j++) {
js[j] = oldD[i * w + j];
}
}
int[][] rotated = new int[h][w];
for (int i = 0; i < h; ++i) {
for (int j = 0; j < w; ++j) {
rotated[i][j] = old2d[h - j - 1][i];
}
}
old2d = null;
for (int i = 0; i < h; ++i) {
for (int j = 0; j < w; ++j) {
newD[i * w + j] = rotated[i][j];
}
}
rotated = null;
newB.setARGB(newD, 0, w, 0, 0, w, h);
return newB;
}
于 2012-08-27T04:43:11.007 回答
1
按着这些次序:
从此链接下载zip文件: BitmapRotate at down side。
从中提取ImageManipulator.java并将其添加到您的项目中;
并使用此链接中的代码:RotatingBitmap on Blackberry
我认为这对您有帮助;
或者
使用以下 BitmapRotate.zip 代码从该链接旋转图像:
于 2012-08-27T06:22:05.280 回答