MIDP1.0实现图片的缩放
使用MIDP1.0来实现图片的缩放
1>两种方式实现图片的放缩:
(1)先放缩宽,然后放缩高,时间复杂度比较低
代码实现:
private static final Image scale(Image srcImage, int desWidth, int desHight) {
int srcWidth = srcImage.getWidth();
int srcHight = srcImage.getHeight();
// 先做水平方向上的伸缩变换
Image tmp = Image.createImage(desWidth, srcHight);
Graphics g = tmp.getGraphics();
for (int x = 0; x < desWidth; x++) {
g.setClip(x, 0, 1, srcHight);
// 按比例放缩
g.drawImage(srcImage, x - x * srcWidth / desWidth, 0, Graphics.LEFT
| Graphics.TOP);
}
// 再做垂直方向上的伸缩变换
Image dst = Image.createImage(desWidth, desHight);
g = dst.getGraphics();
for (int y = 0; y < desHight; y++) {
g.setClip(0, y, desHight, 1);
// 按比例放缩
g.drawImage(tmp, 0, y - y * srcHight / desHight, Graphics.LEFT
| Graphics.TOP);
}
return dst;
}
(2)从一个角开始放缩,实现的图片的画出。时间复杂度比上个差
private void scale(Graphics g, Image srcImage,
int desWidth, int desHeight,
int beginX,int beginY) {
int srcWidth = srcImage.getWidth();
int srcHeight = srcImage.getHeight();
/*
* 从边开始,按比例缩放
*/
for(int i=0;i<desWidth;i++)
for(int j=0;j<desHeight;j++){
g.setClip(beginX+i,beginY+j,1,1);
g.drawImage(srcImage,
beginX+i-i*srcWidth/desWidth,
beginY+j-j*srcHeight/desHeight,
Graphics.LEFT|Graphics.TOP);
}
}
各位如果有更好的,别忘了交流经验哦!