当前位置:文档之家› android图片处理方法

android图片处理方法

android图片处理方法
android图片处理方法

将一个图片切割成多个图片

有种场景,我们想将一个图片切割成多个图片。比如我们在开发一个拼图的游戏,就首先要对图片进行切割。

以下是封装好的两个类,可以实现图片的切割。仅供参考和学习。

一个是ImagePiece类,此类保存了一个Bitmap对象和一个标识图片的顺序索引的int变量。

Java代码

1.import android.graphics.Bitmap;

2.public class ImagePiece {

3.public int index = 0;

4.public Bitmap bitmap = null;

5.}

一个是ImageSplitter类,有一个静态方法split,传入的参数是要切割的Bitmap 对象,和横向和竖向的切割片数。比如传入的是3、3,则横竖向都切割成3片,最终会将整个图片切割成3X3=9片。

Java代码

1.import java.util.ArrayList;

2.import java.util.List;

3.

4.import android.graphics.Bitmap;

5.

6.public class ImageSplitter {

7.

8.public static List split(Bitmap bitmap,

int xPiece, int yPiece) {

9.

10. List pieces = new ArrayList

gePiece>(xPiece * yPiece);

11. int width = bitmap.getWidth();

12. int height = bitmap.getHeight();

13. int pieceWidth = width / 3;

14. int pieceHeight = height / 3;

15. for (int i = 0; i < yPiece; i++) {

16. for (int j = 0; j < xPiece; j++

) {

17. ImagePiece piece = new Imag

ePiece();

18. piece.index = j + i * xPi

ece;

19. int xValue = j * pieceWidt

h;

20. int yValue = i * pieceHeig

ht;

21. piece.bitmap = Bitmap.createB

itmap(bitmap, xValue, yValue,

22. pieceWidth, pi

eceHeight);

23. pieces.add(piece);

24. }

25. }

26.

27. return pieces;

28. }

29.

30.}

1、图标加灰色过滤;

2、android的图片资源默认是静态的,单实例;如果两个IM好友的头像一样,最简单的都是用的软件自带头像,有一个在线,一个离线,直接改变头像的灰度,则两个用户的头像都会变灰或者在线,答案是:Drawable.mutate()。

Java代码

1.Drawable mDrawable = context.getResources().getDrawable(R.dr

awable.face_icon);

2.//Make this drawable mutable.

3.//A mutable drawable is guaranteed to not share its st

ate with any other drawable.

4.mDrawable.mutate();

5.ColorMatrix cm = new ColorMatrix();

6.cm.setSaturation(0);

7.ColorMatrixColorFilter cf = new ColorMatrixColorFilter(cm);

8.mDrawable.setColorFilter(cf);

生成缩略图,抠自android launcher源码:

Java代码

1./*

2.* Copyright (C) 2008 The Android Open Source Project

3.*

4.* Licensed under the Apache License, Version 2.0 (the

"License");

5.* you may not use this file except in compliance wi

th the License.

6.* You may obtain a copy of the License at

7.*

8.* https://www.doczj.com/doc/8c9682822.html,/licenses/LICENSE-2.0

9.*

10. * Unless required by applicable law or agreed to in

writing, software

11. * distributed under the License is distributed on an

"AS IS" BASIS,

12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, eithe

r express or implied.

13. * See the License for the specific language governing

permissions and

14. * limitations under the License.

15. */

16.

17.package https://www.doczj.com/doc/8c9682822.html,uncher;

18.

19.import android.graphics.drawable.BitmapDrawable;

20.import android.graphics.drawable.Drawable;

21.import android.graphics.drawable.PaintDrawable;

22.import android.graphics.Bitmap;

23.import android.graphics.PixelFormat;

24.import android.graphics.Canvas;

25.import android.graphics.PaintFlagsDrawFilter;

26.import android.graphics.Paint;

27.import android.graphics.Rect;

28.import android.content.res.Resources;

29.import android.content.Context;

30.

31./**

32. * Various utilities shared amongst the Launcher's clas

ses.

33. */

34.final class Utilities {

35. private static int sIconWidth = -1;

36. private static int sIconHeight = -1;

37.

38. private static final Paint sPaint = new Paint();

39. private static final Rect sBounds = new Rect();

40. private static final Rect sOldBounds = new Rect(

);

41. private static Canvas sCanvas = new Canvas();

42.

43. static {

44. sCanvas.setDrawFilter(new PaintFlagsDrawFilter

(Paint.DITHER_FLAG,

45. Paint.FILTER_BITMAP_FLAG));

46. }

47.

48. /**

49. * Returns a Drawable representing the thumbnail

of the specified Drawable.

50. * The size of the thumbnail is defined by th

e dimension

51. * https://www.doczj.com/doc/8c9682822.html,uncher_application_icon_size.

52. *

53. * This method is not thread-safe and should b

e invoked on the UI thread only.

54. *

55. * @param icon The icon to get a thumbnail of

.

56. * @param context The application's context.

57. *

58. * @return A thumbnail for the specified icon

or the icon itself if the

59. * thumbnail could not be created

.

60. */

61. static Drawable createIconThumbnail(Drawable icon,

Context context) {

62. if (sIconWidth == -1) {

63. final Resources resources = context

.getResources();

64. sIconWidth = sIconHeight = (int) r

esources.getDimension(android.R.dimen.app_icon_size);

65. }

66.

67. int width = sIconWidth;

68. int height = sIconHeight;

69.

70. float scale = 1.0f;

71. if (icon instanceof PaintDrawable) {

72. PaintDrawable painter = (PaintDrawab

le) icon;

73. painter.setIntrinsicWidth(width);

74. painter.setIntrinsicHeight(height);

75. } else if (icon instanceof BitmapDrawable)

{

76. // Ensure the bitmap has a densit

y.

77. BitmapDrawable bitmapDrawable = (Bit

mapDrawable) icon;

78. Bitmap bitmap = bitmapDrawable.getBi

tmap();

79. if (bitmap.getDensity() == Bitmap.DE

NSITY_NONE) {

80. bitmapDrawable.setTargetDensity

(context.getResources().getDisplayMetrics());

81. }

82. }

83. int iconWidth = icon.getIntrinsicWidth();

84. int iconHeight = icon.getIntrinsicHeight();

85.

86. if (width > 0&& height > 0) {

87. if (width < iconWidth || height <

iconHeight || scale != 1.0f) {

88. final float ratio = (float)

iconWidth / iconHeight;

89.

90. if (iconWidth > iconHeight)

{

91. height = (int) (widt

h / ratio);

92. } else if (iconHeight > ic

onWidth) {

93. width = (int) (heigh

t * ratio);

94. }

95.

96. final Bitmap.Config c = ico

n.getOpacity() != PixelFormat.OPAQUE ?

97. Bitmap.

Config.ARGB_8888 : Bitmap.Config.RGB_565;

98. final Bitmap thumb = Bitmap

.createBitmap(sIconWidth, sIconHeight, c);

99. final Canvas canvas = sCanv

as;

100.canvas.setBitmap(thumb);

101.// Copy the old bounds to restore them later

102.// If we were to do oldBounds = icon.getBounds(),

103.// the call to setBoun ds() that follows would

104.// change the same ins tance and we would lose the

105.// old bounds

106.sOldBounds.set(icon.getBou nds());

107.final int x = (sIconWi dth - width) / 2;

108.final int y = (sIconHe ight - height) / 2;

109.icon.setBounds(x, y, x + width, y + height);

110.icon.draw(canvas);

111.icon.setBounds(sOldBounds) ;

112.icon = new FastBitmapDr awable(thumb);

113.} else if (iconWidth < width && iconHeight < height) {

114.final Bitmap.Config c = Bitmap.Config.ARGB_8888;

115.final Bitmap thumb = B itmap.createBitmap(sIconWidth, sIconHeight, c);

116.final Canvas canvas = sCanvas;

117.canvas.setBitmap(thumb);

118.sOldBounds.set(icon.getBou nds());

119.final int x = (width - iconWidth) / 2;

120.final int y = (height - iconHeight) / 2;

121.icon.setBounds(x, y, x + iconWidth, y + iconHeight);

122.icon.draw(canvas);

123.icon.setBounds(sOldBounds) ;

124.icon = new FastBitmapDr awable(thumb);

125.}

126.}

127.

128.return icon;

129.}

130.

131./**

132.* Returns a Bitmap representing the thumbn ail of the specified Bitmap.

133.* The size of the thumbnail is defined b y the dimension

134.* https://www.doczj.com/doc/8c9682822.html,uncher_application_icon_siz

e.

135.*

136.* This method is not thread-safe and shou ld be invoked on the UI thread only.

137.*

138.* @param bitmap The bitmap to get a thum bnail of.

139.* @param context The application's context.

140.*

141.* @return A thumbnail for the specified b itmap or the bitmap itself if the

142.* thumbnail could not be cr eated.

143.*/

144.static Bitmap createBitmapThumbnail(Bitmap bitm ap, Context context) {

145.if (sIconWidth == -1) {

146.final Resources resources = co ntext.getResources();

147.sIconWidth = sIconHeight = (in t) resources.getDimension(

148.android.R.dimen.ap p_icon_size);

149.}

150.

151.int width = sIconWidth;

152.int height = sIconHeight;

153.

154.final int bitmapWidth = bitmap.getWidt h();

155.final int bitmapHeight = bitmap.getHei ght();

156.

157.if (width > 0&& height > 0) {

158.if (width < bitmapWidth || he ight < bitmapHeight) {

159.final float ratio = (f loat) bitmapWidth / bitmapHeight;

160.

161.if (bitmapWidth > bitma pHeight) {

162.height = (int) (width / ratio);

163.} else if (bitmapHeight > bitmapWidth) {

164.width = (int) ( height * ratio);

165.}

166.

167.final Bitmap.Config c = (width == sIconWidth && height == sIconHeight) ? 168.bitmap.get Config() : Bitmap.Config.ARGB_8888;

169.final Bitmap thumb = B itmap.createBitmap(sIconWidth, sIconHeight, c);

170.final Canvas canvas = sCanvas;

171.final Paint paint = sP aint;

172.canvas.setBitmap(thumb);

173.paint.setDither(false);

174.paint.setFilterBitmap(true );

175.sBounds.set((sIconWidth -width) / 2, (sIconHeight - height) / 2, width, heigh t);

176.sOldBounds.set(0, 0, bit mapWidth, bitmapHeight);

177.canvas.drawBitmap(bitmap, sOldBounds, sBounds, paint);

178.return thumb;

179.} else if (bitmapWidth < widt

h || bitmapHeight < height) {

180.final Bitmap.Config c = Bitmap.Config.ARGB_8888;

181.final Bitmap thumb = B itmap.createBitmap(sIconWidth, sIconHeight, c);

182.final Canvas canvas = sCanvas;

183.final Paint paint = sP aint;

184.canvas.setBitmap(thumb);

185.paint.setDither(false);

186.paint.setFilterBitmap(true );

187.canvas.drawBitmap(bitmap, (sIconWidth - bitmapWidth) / 2,

188.(sIconHeig ht - bitmapHeight) / 2, paint);

189.return thumb;

190.}

191.}

192.

193.return bitmap;

194.}

195.}

Java代码

1.//Android Matrix类实现镜像方法

2.public void drawRegion(Image image_src,

3.

4.int x_src, int y_src,

5.

6.int width, int height,

7.

8.int transform,

9.

10.int x_dest, int y_dest,

11.

12.int anchor){

13.

14.if((anchor&VCENTER) != 0){

15.

16.y_dest -= height/2;

17.

18.}else if((anchor&BOTTOM) != 0){

19.

20.y_dest -= height;

21.

22.}

23.

24.if((anchor&RIGHT) != 0){

25.

26.x_dest -= width;

27.

28.}else if((anchor&HCENTER) != 0){

29.

30.x_dest -= width/2;

31.

32.}

33.

34.Bitmap newMap = Bitmap.createBitmap(image_src.getBitmap(),

x_src, y_src, width, height);

35.

36.Matrix mMatrix = new Matrix();

37.

38.Matrix temp = new Matrix();

39.

40.Matrix temp2 = new Matrix();

41.

42.float[] mirrorY = {

43.

44.-1, 0, 0,

45.0, 1, 0,

46.0, 0, 1

47.

48.};

49.

50.temp.setValues(mirrorY);

51.

52.switch(transform){

53.

54.case Sprite.TRANS_NONE:

55.

56.break;

57.

58.case Sprite.TRANS_ROT90:

59.

60.mMatrix.setRotate(90,width/2, height/2);

61.

62.break;

63.

64.case Sprite.TRANS_ROT180:

65.

66.mMatrix.setRotate(180,width/2, height/2);

67.

68.break;

69.

70.case Sprite.TRANS_ROT270:

71.

72.mMatrix.setRotate(270,width/2, height/2);

73.

74.break;

75.

76.case Sprite.TRANS_MIRROR:

77.

78.mMatrix.postConcat(temp);

79.

80.break;

81.

82.case Sprite.TRANS_MIRROR_ROT90:

83.

84.mMatrix.postConcat(temp);

85.

86.mMatrix.setRotate(90,width/2, height/2);

87.

88.break;

89.

90.case Sprite.TRANS_MIRROR_ROT180:

91.

92.mMatrix.postConcat(temp);

93.

94.mMatrix.setRotate(180,width/2, height/2);

95.

96.break;

97.

98.case Sprite.TRANS_MIRROR_ROT270:

99.

100.mMatrix.postConcat(temp);

101.

102.mMatrix.setRotate(270,width/2, height/2);

103.

104.break;

105.

106.}

107.

108.mMatrix.setTranslate(x_dest, y_dest);

109.

110.canvas.drawBitmap(newMap, mMatrix, mPaint);

111.

112.}

Java代码

1.//图片Url保存为位图并进行缩放操作

2.//通过传入图片url获取位图方法

3.public Bitmap returnBitMap(String url) {

4.URL myFileUrl = null;

5.Bitmap bitmap = null;

6.try {

7.myFileUrl = new URL(url);

8.} catch (MalformedURLException e) {

9. e.printStackTrace();

10. }

11. try {

12. HttpURLConnection conn = (HttpURLCon

nection) myFileUrl

13. .openConnection();

14. conn.setDoInput(true);

15. conn.connect();

16. InputStream is = conn.getInputStream

();

17. bitmap = BitmapFactory.decodeStream(i

s);

18. is.close();

19. } catch (IOException e) {

20. e.printStackTrace();

21. }

22. Log.v(tag, bitmap.toString());

23.

24. return bitmap;

25. }

26.//通过传入位图,新的宽.高比进行位图的缩放操作

27.public static Drawable resizeImage(Bitmap bitmap, int w,

int h) {

28.

29. // load the origial Bitmap

30. Bitmap BitmapOrg = bitmap;

31.

32. int width = BitmapOrg.getWidth();

33. int height = BitmapOrg.getHeight();

34. int newWidth = w;

35. int newHeight = h;

36.

37. Log.v(tag, String.valueOf(width));

38. Log.v(tag, String.valueOf(height));

39.

40. Log.v(tag, String.valueOf(newWidth));

41. Log.v(tag, String.valueOf(newHeight));

42.

43. // calculate the scale

44. float scaleWidth = ((float) newWidth) / w

idth;

45. float scaleHeight = ((float) newHeight) /

height;

46.

47. // create a matrix for the manipulation

48. Matrix matrix = new Matrix();

49. // resize the Bitmap

50. matrix.postScale(scaleWidth, scaleHeight);

51. // if you want to rotate the Bitmap

52. // matrix.postRotate(45);

53.

54. // recreate the new Bitmap

55. Bitmap resizedBitmap = Bitmap.createBitmap(B

itmapOrg, 0, 0, width,

56. height, matrix, true);

57.

58. // make a Drawable from Bitmap to allow

to set the Bitmap

59. // to the ImageView, ImageButton or what

ever

60. return new BitmapDrawable(resizedBitmap);

61.

62. }

Java代码

1.1.图片加载方法,方便用户加载图片

2./***

3.* 加载本地图片

4.* @param context:主运行函数实例

5.* @param bitAdress:图片地址,一般指向R下的drawable目录

6.* @return

7.*/

8.public final Bitmap CreatImage(Context context, int bitAd

ress) {

9.Bitmap bitmaptemp = null;

10.bitmaptemp = BitmapFactory.decodeResource(context.getResource

s(),

11.bitAdress);

12.return bitmaptemp;

13.}

14.2.图片平均分割方法,将大图平均分割为N行N列,方便用户使用

15./***

16.* 图片分割

17.*

18.* @param g

19.* :画布

20.* @param paint

21.* :画笔

22.* @param imgBit

23.* :图片

24.* @param x

25.* :X轴起点坐标

26.* @param y

27.* :Y轴起点坐标

28.* @param w

29.* :单一图片的宽度

30.* @param h

31.* :单一图片的高度

32.* @param line

33.* :第几列

34.* @param row

35.* :第几行

36.*/

37.public final void cuteImage(Canvas g, Paint paint, Bitma

p imgBit, int x,

38.int y, int w, int h, int line, int row) {

39.g.clipRect(x, y, x + w, h + y);

40.g.drawBitmap(imgBit, x –line * w, y –row * h, pa

int);

41.g.restore();

42.}

43.3.图片缩放,对当前图片进行缩放处理

44./***

45.* 图片的缩放方法

46.*

47.* @param bgimage

48.* :源图片资源

49.* @param newWidth

50.* :缩放后宽度

51.* @param newHeight

52.* :缩放后高度

53.* @return

54.*/

55.public Bitmap zoomImage(Bitmap bgimage, int newWidth, int

newHeight) {

56.// 获取这个图片的宽和高

57.int width = bgimage.getWidth();

58.int height = bgimage.getHeight();

59.// 创建操作图片用的matrix对象

60.Matrix matrix = new Matrix();

61.// 计算缩放率,新尺寸除原始尺寸

62.float scaleWidth = ((float) newWidth) / width;

63.float scaleHeight = ((float) newHeight) / height;

64.// 缩放图片动作

65.matrix.postScale(scaleWidth, scaleHeight);

66.Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, width,

height,

67.matrix, true);

68.return bitmap;

69.}

70.4.绘制带有边框的文字,一般在游戏中起文字的美化作用

71./***

72.* 绘制带有边框的文字

73.*

74.* @param strMsg

75.* :绘制内容

76.* @param g

77.* :画布

78.* @param paint

79.* :画笔

80.* @param setx

81.* ::X轴起始坐标

82.* @param sety

83.* :Y轴的起始坐标

84.* @param fg

85.* :前景色

86.* @param bg

87.* :背景色

88.*/

89.public void drawText(String strMsg, Canvas g, Paint pain

t, int setx,

90.int sety, int fg, int bg) {

91.paint.setColor(bg);

92.g.drawText(strMsg, setx + 1, sety, paint);

93.g.drawText(strMsg, setx, sety –1, paint);

94.g.drawText(strMsg, setx, sety + 1, paint);

95.g.drawText(strMsg, setx –1, sety, paint);

96.paint.setColor(fg);

97.g.drawText(strMsg, setx, sety, paint);

98.g.restore();

99.}

100.5.Android 图片透明度处理代码

101./**

102.* 图片透明度处理

103.*

104.* @param sourceImg

105.* 原始图片

106.* @param number

107.* 透明度

108.* @return

109.*/

110.public static Bitmap setAlpha(Bitmap sourceImg, int number) {

111.int[] argb = new int[sourceImg.getWidth() * sourceIm

g.getHeight()];

112.sourceImg.getPixels(argb, 0, sourceImg.getWidth(), 0, 0,sourceImg.getWidth(), sourceImg.getHeight());// 获得图片的ARGB值

113.number = number * 255/ 100;

114.for (int i = 0; i < argb.length; i++) {

115.argb = (number << 24) | (argb & 0×00FFFFFF);//修改最高2位的值

116.}

117.sourceImg = Bitmap.createBitmap(argb, sourceImg.getWidt h(), sourceImg.getHeight(), Config.ARGB_8888);

118.return sourceImg;

119.}

120.6.图片翻转

121.Resources res = this.getContext().getResources();

122.img = BitmapFactory.decodeResource(res, R.drawable.slog o);

123.Matrix matrix = new Matrix();

124.matrix.postRotate(90); /*翻转90度*/

125.int width = img.getWidth();

126.int height = img.getHeight();

127.r_img = Bitmap.createBitmap(img, 0, 0, width, height , matrix, true);

Java代码

1.import android.graphics.Bitmap;

2.import android.graphics.Canvas;

3.import android.graphics.LinearGradient;

4.import android.graphics.Matrix;

5.import android.graphics.Paint;

6.import android.graphics.PixelFormat;

7.import android.graphics.PorterDuffXfermode;

8.import android.graphics.Rect;

9.import android.graphics.RectF;

10.import android.graphics.Bitmap.Config;

11.import android.graphics.PorterDuff.Mode;

12.import android.graphics.Shader.TileMode;

13.import android.graphics.drawable.Drawable;

14./**

15.*

16.* @author superdev

17.* @version 1.0

18.*

19.*/

20.public class ImageUtil {

21.

22./**

23.* 放大缩小图片

24.*/

25.public static Bitmap zoomBitmap(Bitmap bitmap, int w, in

t h) {

26. int width = bitmap.getWidth();

27. int height = bitmap.getHeight();

28. Matrix matrix = new Matrix();

29. float scaleWidht = ((float) w / width);

30. float scaleHeight = ((float) h / height);

31. matrix.postScale(scaleWidht, scaleHeight);

32. Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, w

idth, height, matrix, true);

33. return newbmp;

34.}

35.

36./**

37.* 将Drawable转化为Bitmap

38.*/

39.public static Bitmap drawableToBitmap(Drawable drawable) {

40. int width = drawable.getIntrinsicWidth();

41. int height = drawable.getIntrinsicHeight();

42. Bitmap bitmap = Bitmap.createBitmap(width, height, d

rawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.

ARGB_8888 : Bitmap.Config.RGB_565);

43. Canvas canvas = new Canvas(bitmap);

44. drawable.setBounds(0, 0, width, height);

45. drawable.draw(canvas);

46. return bitmap;

47.

48.}

49.

50./**

51.* 获得圆角图片的方法

53.public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,

float roundPx) {

54.

55. Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),

bitmap.getHeight(), Config.ARGB_8888);

56. Canvas canvas = new Canvas(output);

57.

58. final int color = 0xff424242;

59. final Paint paint = new Paint();

60. final Rect rect = new Rect(0, 0, bitmap.getWidth()

, bitmap.getHeight());

61. final RectF rectF = new RectF(rect);

62.

63. paint.setAntiAlias(true);

64. canvas.drawARGB(0, 0, 0, 0);

65. paint.setColor(color);

66. canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

67.

68. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

69. canvas.drawBitmap(bitmap, rect, rect, paint);

70.

71. return output;

72.}

73.

74./**

75.* 获得带倒影的图片方法

76.*/

77.public static Bitmap createReflectionImageWithOrigin(Bitmap

bitmap) {

78. final int reflectionGap = 4;

79. int width = bitmap.getWidth();

80. int height = bitmap.getHeight();

81.

82. Matrix matrix = new Matrix();

83. matrix.preScale(1, -1);

84.

85. Bitmap reflectionImage = Bitmap.createBitmap(bitmap,

0, height / 2, width, height / 2, matrix, false);

86.

87. Bitmap bitmapWithReflection = Bitmap.createBitmap(widt

h, (height + height / 2), Config.ARGB_8888);

89. Canvas canvas = new Canvas(bitmapWithReflection);

90. canvas.drawBitmap(bitmap, 0, 0, null);

91. Paint deafalutPaint = new Paint();

92. canvas.drawRect(0, height, width, height + reflectio

nGap, deafalutPaint);

93.

94. canvas.drawBitmap(reflectionImage, 0, height + reflec

tionGap, null);

95.

96. Paint paint = new Paint();

97. LinearGradient shader = new LinearGradient(0, bitmap

.getHeight(), 0, bitmapWithReflection.getHeight() + reflect ionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);

98. paint.setShader(shader);

99. // Set the Transfer mode to be porter duff and

destination in

100.paint.setXfermode(new PorterDuffXfermode(Mode.DST_I N));

101.// Draw a rectangle using the paint with our linear gradient

102.canvas.drawRect(0, height, width, bitmapWithRefle ction.getHeight() + reflectionGap, paint);

103.return bitmapWithReflection;

104.}

105.}

Java代码

1.private byte[] Bitmap2Bytes(Bitmap bm){

2.ByteArrayOutputStream baos = new ByteArrayOutputStrea

m();

https://www.doczj.com/doc/8c9682822.html,press(https://www.doczj.com/doc/8c9682822.html,pressFormat.PNG, 100, baos);

4.return baos.toByteArray();

5.}

6.private Bitmap Bytes2Bimap(byte[] b){

7.if(b.length!=0){

8.return BitmapFactory.decodeByt

eArray(b, 0, b.length);

9.}

10. else {

11. return null;

android毕业设计(论文)开题报告

毕业设计(论文) 开题报告 题目___________________________ 学院___________________________ 专业及班级___________________________ 姓名___________________________ 学号___________________________ 指导教师 ___________________________ 日期 ___________________________

西安科技大学毕业设计(论文)开题报告

二、主要研究(设计)内容、研究(设计)思路及工作方法或工作流程 设计内容:基于Android平台下实现理货员的功能:精耕拜访,销售机会,拜访效果,门店销量查询,待办事项,数据维护:队列信息,基础信息,地图下载。 设计思路及工作方法: 1.精耕拜访: (1)初始进入该页面,系统会自动获取该理货员的本日拜访的门店及路线。 (2)下方地图会自动定位目前理货员的位置。 (3)点击门店的具体门店名称,在右边会显示该门店的联系人,电话,及地址,并且地图 会自动切换定位以该门店为中心。 (4)点击地图上的+可实现地图局部放大。-可实现地图的放小。 (5)如已拜访的门店,点击进入可以调去历史拜访数据。如未拜访的门店,点击进入可以新增该拜访记录。 (6)如理货员在拜访期间,发现门店已经有卖而目前系统中无记录的情况,则可以通过扫 描SKU的条形码,系统会自动匹配该SKU的信息给理货员。 匹配顺序:连锁总店—区域管理—基本SKU信息 补充说明: (1)公司动态内容,为了显示保乐力加集团的整体形象,有必要对公司的动态进行展示。 要包括集团的光辉历程,门店信息,集团的促销信息等。 (2)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员 需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且 分发。 (3)陈列报告,为显示每次理货员必须处理的门店信息记录及图片等。 (4)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且分发。 (5)价格显示,系统会自动带出竞品信息。罗列在下半部。理货员在进行拜访期间,可以对本身的SKU及竞品的价格进行登记。主要登记内容:零售价格,促销价格及促销期间。信息采集完毕,可以供后台进行统计分析。 (7)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且分发。 (7)库存信息,主要记录SKU的库存数量。 (8)上半部为助销申请内容,主要是对一些礼品的申请。 (9)订单处理,为新增订单,退货内容及换货内容的跟踪。 2.销售机会: (1)打开销售机会界面,会自动定位目前的门店列表。 (2)用户可以输入门店名称查询具体的门店信息及地图位置。

Android图片处理工具类(圆角,压缩)

Android图片处理工具类(圆角,压缩) 工作中用到的图片处理工具类,简单写下来,以便备用! public class BitmapUtils { /** * 图像背景圆角处理 * bitmap要处理的图片 roundPx 图片弯角的圆度一般是5到10之间 */ public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) { // 创建与原图大小一样的bitmap文件,Config.ARGB_8888根据情况可以改用其它的 Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); // 实例画布,绘制的bitmap将保存至output中 Canvas canvas = new Canvas(output); final int color = 0xff424242;//写自己需要的颜色值 final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); paint.setAntiAlias(true);

canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); bitmap.recycle(); bitmap = null; return output; } /** * bitmap缩放 * width要缩放的宽度 height要缩放的高度 */ public static Bitmap getBitmapDeflation(Bitmap bitmap, int width, int height, boolean recycle) { if (null == bitmap) { return null;

如何在android程序中显示图片

我们做Android 程序的时候,有时候需要显示图片在界面上,这里我们将实现一个将图片展示到手机屏幕,并让其不停的浮动的效果! 首先我们要先准备一张图片,在这里我准备了一张图片,如下: 将此图片放到文件夹"res->drawable-*dpi"下,记得,三个文件夹都要放,因为系统会根据不同的分辨率去取不同的图片,如果有的没放,在某些分辨率下,会找不到资源。将此图片重命名为“pic.png”,在R.java里的drawable 类里会生成一个pic的常量。 图片要显示,就是要容器可以让其显示,因为所有的Android的UI组件都是继承自View,View也实现了Drawable接口,所以在此,我们也重新定义一个View让其用来显示我们的这张图片,并让这张图片浮动。我们创建一个在包“org.leo.bitmap”下的,类名为“MovingPictureView”的类,该类继承自android.view.View。此类目前代码大致如下: public class MovingPictureView extends View { public MovingPictureView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } } 我们要重载他的“onDraw”方法,这个方法就是Android框架展现View的时候用来绘制显示内容那个的方法。在此我们将他的所有方法体都删除掉(上面代码红色部分删掉),完全将其重写。首先我们要创建一个图片对象,在Android里,所有位图图片都是使用Bitmap类来封装的,我们就先声明一个代表我们刚才图片的一个Bitmap对象,可通过以下方式声明: Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic); 其中的“getResources()”方法,是有View提供的,可以根据此方法获得我们所有的资源,将来有机会再细说!

android中selector背景选择器(全部属性)

浅谈android的selector背景选择器 ---------------------------------------------------- Item顺序是有讲究的,条件限定越细致,则应该放到前面。比如这儿如果把1,2行和3,4行的item交换,那么pressed的就永远无法触发了,因为有item已经满足条件返回了。可以理解为代码中的if语句。 ---------------------------------------------------- 关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。 首先android的selector是在drawable/xxx.xml中配置的。 先看一下listview中的状态: 把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。 drawable/list_item_bg.xml

如何用Android用ImageView显示本地和网上的图片说明

如何用Android用ImageView显示本地和网上 的图片说明 Android:ImageView如何显示网络图片 本文地址:https://www.doczj.com/doc/8c9682822.html,/programmar/blog/item/79483ecb2ac75cf552664fd3.html在 Android中显示一张网络图片其实是超级简单的,下面就一个非常简单的例子: Step1: 1、创建你的Activity,本例中以ViewWebImageActivity说明; 2、ViewWebImageActivity中的代码如下: String imageUrl = "https://www.doczj.com/doc/8c9682822.html,/baidu/pic/item/7d8aebfebf3f9e125c6008d8.jpg"; //这就是你需要显示的网络图片---网上随便找的 Bitmap bmImg; ImageView imView; Button button1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.doczj.com/doc/8c9682822.html,yout.main); imView = (ImageView) findViewById(R.id.imview); imView.setImageBitmap(returnBitMap(imageUrl)); } public Bitmap returnBitMap(String url) { URL myFileUrl = null; Bitmap bitmap = null; try { myFileUrl = new URL(url); } catch (MalformedURLException e) { e.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection(); conn.setDoInput(true); conn.connect();

android消除Preference黑色背景

话不多说,直接切入正题 一、Android中消除preference拖拉时黑色背景方法: 首先建立一个preference_list.xml 代码如下: 注释:android:divider="@drawable/divider" android:cacheColorHint="#00000000" 重点是这两句话:第一句是设置preferece之间的分割线; 第二句就是消除preference拖拽时产生的黑色背景啦!(“#00000000”就是将其设为透明,你也可以把它设为其他颜色) 二、代码中调用方法: 随便写个PreActivity.java import android.content.Context; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; public class PreActivity extends PreferenceActivity { @Override

android 图片剪裁

1. Canvas类用来实现绘制.通过组合使用Canva s类的成员函数可以实现随心随欲地绘制图片的任何部分. Canvas.clipRect:设置显示区域 Canvas.drawBitmap:绘制 例子: Bitmap b=Bitma pFactory.decodeStream("图片编号", null);//读取图片 ... Canvas c = null;//实例Canvas c.save();//记录原来的ca nvas状态 c.clipRect(100,100,200,300);//显示从(100,100)到(200,300)的区域(单位:象素) c.drawBitmap(b,10,0,null); //将阉割过的图片画到(10,0)位置 c.restore();//恢复canva s状态 2. android 从sdcard 读取图片剪切粘贴 文章分类:移动开发 android 图片编辑时需要从外界(sdcard ,res/.png...,xml)读取图片到画布,其中从sdcard读取图片到画布的过程如下: public void drawBitMapFromSDcard(String dir) { if(dir ==null || dir.equals("")){ return ; } bitMap = BitmapFactory.decodeFile(dir); int width = bitMap.getWidth(); int height = bitMap.getHeight(); 如果图片像素太大超过手机屏幕大小可以按照手机屏比例进行缩放 if (width > 320 && height > 480) { int newWidth = 320; int newHeight = 480; float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; float minScale = Math.min(scaleWidth, scaleHeight); matrix = new Matrix();

Android 标题栏添加控件及Button控件背景颜色的设置

Android 标题栏添加控件及Button控件背景颜色的设置 一、Android中标题栏添加按 现在很多的Android程序都在标题栏上都显示了一些按钮和标题,如下图: 下面通过实例来看一下如何实现。 1、在layout下创建一个titlebtn.xml文件,内容如下:

android图片3d旋转

看到很多人在问如何实现三维的翻转效果,所以今天在这里简单的给大家分析一下,其实在APIDemo中就有这样一个例子,那么我们就以其为例来学习Android中的翻转动画效果的实现,首先看一下运行效果如下图所示。 Android中并没有提供直接做3D翻转的动画,所以关于3D翻转的动画效果需要我们自己实现,那么我们首先来分析一下Animation 和Transformation。 Animation动画的主要接口,其中主要定义了动画的一些属性比如开始时间,持续时间,是否重复播放等等。而Transformation中则包含一个矩阵和alpha值,矩阵是用来做平移,旋转和缩放动画的,而alpha值是用来做alpha动画的,要实现3D旋转动画我们需要继承自Animation类来实现,我们需要重载getTransformation和applyTransformation,在getTransformation中Animation会根据动画的属性来产生一系列的差值点,然后将这些差值点传给applyTransformation,这个函数将根据这些点来生成不同的Transformation。下面是具体实现: 1.public class Rotate3dAnimation extends Animation { 2.//开始角度 3. private final float mFromDegrees; 4.//结束角度 5. private final float mToDegrees; 6.//中心点

7. private final float mCenterX; 8. private final float mCenterY; 9. private final float mDepthZ; 10.//是否需要扭曲 11. private final boolean mReverse; 12.//摄像头 13. private Camera mCamera; 14. public Rotate3dAnimation(float fromDegrees, float toDegrees, 15. float centerX, float centerY, float depthZ, boolean reverse) { 16. mFromDegrees = fromDegrees; 17. mToDegrees = toDegrees; 18. mCenterX = centerX; 19. mCenterY = centerY; 20. mDepthZ = depthZ; 21. mReverse = reverse; 22. } 23. 24. @Override 25. public void initialize(int width, int height, int parentWidth, int par entHeight) { 26. super.initialize(width, height, parentWidth, parentHeight); 27. mCamera = new Camera(); 28. } 29.//生成Transformation 30. @Override 31. protected void applyTransformation(float interpolatedTime, Transformat ion t) { 32. final float fromDegrees = mFromDegrees; 33.//生成中间角度 34. float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interp olatedTime); 35. 36. final float centerX = mCenterX; 37. final float centerY = mCenterY; 38. final Camera camera = mCamera; 39. 40. final Matrix matrix = t.getMatrix(); 41. 42. camera.save(); 43. if (mReverse) { 44. camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime); 45. } else {

安卓图片批量处理软件 (12页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == 安卓图片批量处理软件 篇一:Android_解决图片大量下载:软引用 Android 解决图片大量下载:软引用 1.对象的强、软、弱和虚引用 为了能更加灵活控制对象的生命周期,需要知道对象引用的4中级别,由高到低依次为:强引用、软引用、弱引用和虚引用 备注:这四种的区别: ⑴强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ⑵软引用(SoftReference) 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存(下文给出示例)。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。 ⑶弱引用(WeakReference) 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

Android图片浏览器

长沙学院课程设计说明书 题目Android图片浏览器 系(部) 计算机科学与技术 专业(班级) 软件工程(10软件6班) 姓名彭成辉 学号2010022504 指导教师杨凤年 起止日期2013.05.27~2013.06.21

课程设计任务书 课程名称:综合实训Ⅱ 题目:Android图片浏览器 已知技术参数和设计要求: 设计基于Android平台的图片浏览器程序,具体要求如下: 1.图片文件的管理功能。在配置文件中配置访问SD卡文件的权限,使用File类访问SD卡上的图片文件。 2.用户浏览图片的功能。用户通过触摸屏操作选择图片进行浏览,使用事件响应函数响应用户的操作,可以使用ImageView在屏幕中显示图片。 3.用户编辑图片的功能。用户可以放大、缩小、旋转和裁剪图片。 4.设置壁纸功能。将选择的图片设置为壁纸,可以使用WallPaper类来完成该功能。 5.图片文件的排序功能和查找功能。根据文件的名称、日期或者其他属性进行排序,根据文件的名称、日期或者其他属性进行查找。 6.使用多种视图展示图片的功能。可以使用ListView、GridView或者Gallery类来展示图片。各阶段具体要求: (1)开发前的准备:Android开发环境的搭建。 (2)系统分析与设计:包括程序需求分析、UI设计、业务逻辑设计等。 (3)系统编码实现:根据以上六点要求,对Android图片浏览器进行编码实现。 (4)测试:编写测试用例对程序进行测试。 设计工作量: (1)软件设计:完成问题陈述中所提到的软件以及工作量要求。 (2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。 工作计划: 安排4周时间进行综合实训。 第一周----Android开发环境的搭建,软件需求分析。 第二周----UI设计、业务逻辑设计。 第三、四周----Android图片浏览器的代码实现与软件测试。 注意事项 ?提交文档 长沙学院课程设计任务书(每学生1份) 长沙学院课程设计论文(每学生1份) 长沙学院课程设计鉴定表(每学生1份) 指导教师签名:日期:2013-5-26 教研室主任签名:日期: 系主任签名:日期:

Android 中的ListView选中项的背景颜色怎么设置

Android 中的ListView选中项的背景颜色怎么设置? android中ListView获得焦点的项默认是黄色的(模拟器上)现在因为需求想要自己定义被选中项的背景能实现吗? 最佳答案 完全可以实现,这用到了Android的Selector(根据组件的状态显示该状态对应的图片,并以此图片作为背景显示)。把下面的XML文件保存成你自己命名的.xml文件(比如list_bg.xml),注意,这个文件相当于一个背景图片选择器,在系统使用时根据 ListView中的列表项的状态来使用相应的背景图片,什么情况使用什么图片我在下面都进行了说明。还有,你可以把它看成是一个图片来使用,放于 drawable目录下,配置背景属性 android:background="@drawable/list_bg"就能达到你需要的目的了。 --------------------------------------------------------------------------------------------------------------- 在values下新建一个color.xml #808080FF #FFFFFFFF #00ffffff

android:设置背景图片、背景颜色透明

android:设置背景图片、背景颜色透明 2012-03-15 16:51:09|分类: android UI |标签: |字号大中小订阅 Button或者ImageButton的背景设为透明或者半透明 半透明

相关文档 最新文档