2015-11-16 41 views
1

我是Android开发的新手。我需要一些帮助从SDCard加载图像到drawingView。我想在这里实现的是加载图像后我想修改图像并保存。 所以我的主要任务是将图像加载到DrawingView。 感谢您对此的帮助。从SDCard加载图像到DrawingView

谢谢。

回答

0

不确定什么是DrawingView,或者您的意思是ImageView

File imageFile = new File("/sdcard/my_photo_1.jpg"); 
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath()); 
imageView.setImageBitmap(bitmap); 
0

您可以使用画布绘制图像,下面是代码:

public class Keypaint extends View { 
    Paint p; 
    Bitmap bitmap = null; 

public Keypaint(Context context) { 
    super(context); 

    File imageFile = new File("/sdcard/my_photo_1.jpg"); 
    bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath()); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     p=new Paint(); 

     p.setColor(Color.RED); 
     canvas.drawBitmap(bitmap, 0, 0, p); 
    } 


} 
4

请使用类似这样..this我

YourDrawingView jpgView = (YourDrawingView)findViewById(R.id.imageView); 
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/sample-1.jpg"); 
jpgView.setImageBitmap(bitmap); 
setContentView(R.layout.main); 

工作,这是我的DrawingView

public class DrawingView extends ImageView { 

    private boolean erase = false; 
    //drawing path 
    private Path drawPath; 
    //drawing and canvas paint 
    private Paint drawPaint, canvasPaint; 
    //initial color 
    private int paintColor = 0xFF660000; 
    //canvas 
    private Canvas drawCanvas; 
    //canvas bitmap 
    private Bitmap canvasBitmap; 

    private float brushSize, lastBrushSize; 

    public DrawingView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     setUpDrawing(); 
    } 

    public DrawingView(Context context) { 
     super(context); 
    } 

    private void setUpDrawing() { 
     drawPath = new Path(); 
     drawPaint = new Paint(); 
     drawPaint.setColor(paintColor); 
     drawPaint.setAntiAlias(true); 
     drawPaint.setStrokeWidth(20); 
     drawPaint.setStyle(Paint.Style.STROKE); 
     drawPaint.setStrokeJoin(Paint.Join.ROUND); 
     drawPaint.setStrokeCap(Paint.Cap.ROUND); 
     canvasPaint = new Paint(Paint.DITHER_FLAG); 

     brushSize = getResources().getInteger(R.integer.medium_size); 
     lastBrushSize = brushSize; 

     drawPaint.setStrokeWidth(brushSize); 
    } 

    public void setErase(boolean isErase) { 
     //set erase true or false 
     erase = isErase; 
     if (erase) drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 
     else drawPaint.setXfermode(null); 
    } 

    public void setBrushSize(float newSize) { 
     //update size 
     float pixelAmount = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 
       newSize, getResources().getDisplayMetrics()); 

     brushSize = pixelAmount; 

     drawPaint.setStrokeWidth(brushSize); 

    } 

    public void setLastBrushSize(float lastSize) { 
     lastBrushSize = lastSize; 
    } 

    public float getLastBrushSize() { 
     return lastBrushSize; 
    } 

    @Override 
    protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
     super.onSizeChanged(w, h, oldw, oldh); 

     canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
     drawCanvas = new Canvas(canvasBitmap); 
    } 


    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint); 
     canvas.drawPath(drawPath, drawPaint); 

    } 


    @Override 
    public boolean onTouchEvent(MotionEvent event) { 

     float touchX = event.getX(); 
     float touchY = event.getY(); 

     switch (event.getAction()) { 

      case MotionEvent.ACTION_DOWN: 
       drawPath.moveTo(touchX, touchY); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       drawPath.lineTo(touchX, touchY); 
       break; 
      case MotionEvent.ACTION_UP: 
       drawCanvas.drawPath(drawPath, drawPaint); 
       drawPath.reset(); 
       break; 
      default: 
       break; 
     } 

     invalidate(); 
     return true; 


    } 

    public void setColor(String color) { 
     invalidate(); 

     paintColor = Color.parseColor(color); 
     drawPaint.setColor(paintColor); 

    } 


    public void startNew() { 
     drawCanvas.drawColor(0, PorterDuff.Mode.CLEAR); 
     invalidate(); 
    } 
} 
+0

嗨Vivek感谢您的回应,不能访问s的setImageBitmap(位图)方法。我该如何解决它? – t4thilina

+1

对不起,我忘了提及我的自定义视图扩展ImageView –

+0

没问题的队友,我可以看看你是如何从imageview扩展它?谢谢。 – t4thilina