2015-11-16 3 views
1

Я новичок в разработке Android. Мне нужна помощь при загрузке изображения из SDCard в drawView. То, что я пытаюсь достичь здесь, - это загрузить изображение, которое я хочу изменить изображение и сохранить. Итак, моя основная задача - загрузить изображение в 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

пожалуйста, используйте что-то вроде этого ..выполняется работал для меня

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

Hi Vivek благодарит за ваш ответ, не может пользоваться s setImageBitmap (bitmap). как я могу это решить? – t4thilina

+1

жаль, что я забыл упомянуть, что мое пользовательское представление расширено ImageView –

+0

Без проблем, могу ли я увидеть, как вы расширили его из imageview? Спасибо. – t4thilina

Смежные вопросы