diff --git a/app/src/main/java/fr/ul/projet/AccesActivity.java b/app/src/main/java/fr/ul/projet/AccesActivity.java
index d873063efa043c4e791cec3218ad22e9c3fceb58..e95f7672d7b332ee6cf0f3e7f9131437e9ba6915 100644
--- a/app/src/main/java/fr/ul/projet/AccesActivity.java
+++ b/app/src/main/java/fr/ul/projet/AccesActivity.java
@@ -1,42 +1,38 @@
 package fr.ul.projet;
 
-import android.content.DialogInterface;
 import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
 import android.net.Uri;
 import android.os.Bundle;
-import android.os.Environment;
-import android.os.SystemClock;
-import android.provider.MediaStore;
-import android.util.Log;
 import android.view.View;
 import android.widget.Button;
-import android.widget.EditText;
 import android.widget.ImageView;
-import android.widget.LinearLayout;
 import android.widget.TextView;
-import android.widget.Toast;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import java.io.InputStream;
 
 import androidx.activity.EdgeToEdge;
 import androidx.activity.result.ActivityResult;
 import androidx.activity.result.ActivityResultCallback;
 import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
-import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatActivity;
-import androidx.core.content.FileProvider;
 import androidx.core.graphics.Insets;
 import androidx.core.view.ViewCompat;
 import androidx.core.view.WindowInsetsCompat;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
 
+import fr.ul.projet.modele.Acces;
 import fr.ul.projet.modele.Modele;
 import fr.ul.projet.modele.Piece;
+import fr.ul.projet.outils.GestionImage;
 
 public class AccesActivity extends AppCompatActivity {
 
@@ -47,6 +43,11 @@ public class AccesActivity extends AppCompatActivity {
     private int idDest;
     private Uri photo;
 
+    private ImageView imageView;
+    private DrawingView drawingView;
+    private boolean isDrawingEnabled = false;
+
+
     private ActivityResultLauncher<Intent> launcher;
 
 
@@ -57,6 +58,7 @@ public class AccesActivity extends AppCompatActivity {
         EdgeToEdge.enable(this);
         setContentView(R.layout.activity_acces);
 
+
         this.modele = getIntent().getParcelableExtra("modele");
         this.piece = this.modele.getPieceCourante();
         this.photo = getIntent().getParcelableExtra("photo");
@@ -64,33 +66,81 @@ public class AccesActivity extends AppCompatActivity {
         this.directionDest = getIntent().getExtras().getString("directionDest");
         this.idDest = getIntent().getExtras().getInt("pieceDest");
 
+        ContentResolver resolver = this.getContentResolver();
+        InputStream inputStream = null;
+        try{
+            inputStream = resolver.openInputStream(this.photo);
+        }catch (Exception e){
+
+        }
+        Bitmap image = BitmapFactory.decodeStream(inputStream);
 
         TextView textView = findViewById(R.id.textView2);
         textView.setText(getString(R.string.acces, this.modele.getNom(), this.piece.getNom(), direction));
 
 
-        DrawableImageView imageView = findViewById(R.id.imageView);
-        imageView.setImageURI(photo);
+        this.imageView = findViewById(R.id.imageView);
+        this.drawingView = findViewById(R.id.drawingView);
+        this.drawingView.setImageBitmap(image);
+        this.imageView.post(()->{
+            Bitmap originalBitmap = GestionImage.getBitmapFromUri(this, photo);
+            Bitmap resizedBitmap = GestionImage.getResizedBitmap(originalBitmap, imageView);
+            imageView.setImageBitmap(resizedBitmap);
+            drawingView.setImageBitmap(resizedBitmap);
+        });
+
+        for (Acces a : this.modele.getPieceCourante().getAcces().values()){
+            if (a.getDestination().getId() == this.idDest){
+                switch (this.directionDest){
+                    case "Nord":
+                        if (a.getDestination().getPhotoNord() != null){
+                            this.drawingView.addRectangleFromCoords(a.getXCoinHautGauche(), a.getYCoinHautGauche(), a.getXCoinBasDroite(), a.getYCoinBasDroite());
+                        }
+                        break;
+                    case "Sud":
+                        if (a.getDestination().getPhotoSud() != null){
+                            this.drawingView.addRectangleFromCoords(a.getXCoinHautGauche(), a.getYCoinHautGauche(), a.getXCoinBasDroite(), a.getYCoinBasDroite());
+                        }
+                        break;
+                    case "Est":
+                        if (a.getDestination().getPhotoEst() != null){
+                            this.drawingView.addRectangleFromCoords(a.getXCoinHautGauche(), a.getYCoinHautGauche(), a.getXCoinBasDroite(), a.getYCoinBasDroite());
+                        }
+                        break;
+
+                    case "Ouest":
+                        if (a.getDestination().getPhotoOuest() != null){
+                            this.drawingView.addRectangleFromCoords(a.getXCoinHautGauche(), a.getYCoinHautGauche(), a.getXCoinBasDroite(), a.getYCoinBasDroite());
+                        }
+                        break;
+                }
+            }
+        }
+
+        this.drawingView.setOnRectangleDrawnListener((startX, startY, endX, endY) -> {
+            this.modele.ajouterAcces(this.modele.getPieces().get(this.idDest), startX, startY, endX, endY);
+        });
 
         Button ajouter = findViewById(R.id.boutonAcces);
 
         ajouter.setOnClickListener(v -> {
-            imageView.setDrawing(this.idDest);
+            drawingView.enableDrawing(true);
         });
 
+        Button supprimer = findViewById(R.id.suppAcces);
 
-        imageView.setOnRectangleClickListener(new DrawableImageView.OnRectangleClickListener() {
-            @Override
-            public void onRectangleClick(int rectangleId) {
-                AccesActivity.this.modele.setPieceCourante(AccesActivity.this.modele.getPieces().get(rectangleId));
-                Intent intent = new Intent(AccesActivity.this, PieceActivity.class);
-                intent.putExtra("modele", modele);
-                launcher.launch(intent);
-                //Toast.makeText(AccesActivity.this, getString(R.string.destAcces, AccesActivity.this.modele.getPieces().get(rectangleId).getNom()) , Toast.LENGTH_SHORT).show();
+        supprimer.setOnClickListener(v -> {
+            for (Acces a : this.modele.getPieceCourante().getAcces().values()){
+                if (a.getDestination().getId() == this.idDest){
+                    this.modele.supprimerAcces(a.getId());
+                }
             }
+
+            drawingView.clear();
         });
 
 
+
         ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.acces), (v, insets) -> {
             Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
             v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
@@ -110,6 +160,7 @@ public class AccesActivity extends AppCompatActivity {
     }
 
 
+
     public void quit(View v){
         Intent res = new Intent(AccesActivity.this, MainActivity.class);
         launcher.launch(res);
diff --git a/app/src/main/java/fr/ul/projet/DrawableImageView.java b/app/src/main/java/fr/ul/projet/DrawableImageView.java
deleted file mode 100644
index f29ef99ca728194e5881bc40ecb04d5c8716225a..0000000000000000000000000000000000000000
--- a/app/src/main/java/fr/ul/projet/DrawableImageView.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package fr.ul.projet;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-
-import androidx.appcompat.widget.AppCompatImageView;
-
-import java.util.HashMap;
-
-
-public class DrawableImageView extends AppCompatImageView {
-
-    private Paint paint;
-    private HashMap<Integer,RectF> rectangles = new HashMap<>();
-    private HashMap<Integer,RectF> rectanglesTemp = new HashMap<>();
-    private float startX, startY, endX, endY;
-    private boolean isDrawingFinished = false;
-    private boolean fixed = false;
-    private boolean drawing = false;
-    private int id;
-
-    private OnRectangleClickListener listener;
-
-    public DrawableImageView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        init();
-    }
-
-    public DrawableImageView(Context context) {
-        super(context);
-        init();
-    }
-
-    private void init() {
-        paint = new Paint();
-        paint.setColor(Color.RED);
-        paint.setStyle(Paint.Style.STROKE);
-        paint.setStrokeWidth(5);
-    }
-
-    @Override
-    public boolean performClick() {
-        super.performClick(); // Appeler la méthode de la superclasse pour marquer le clic
-        return true;
-    }
-
-    @Override
-    protected void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-        for (RectF rect : rectangles.values()) {
-            canvas.drawRect(rect, paint);
-        }
-        for (RectF rect : rectanglesTemp.values()) {
-            canvas.drawRect(rect, paint);
-        }
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-
-        if (isDrawingFinished){
-            // Vérifier si l'utilisateur a cliqué sur un rectangle existant
-            for (Integer key : rectangles.keySet()) {
-                RectF rect = rectangles.get(key);
-                if (rect.contains(event.getX(), event.getY())) {
-                    performClick();
-                    if (listener != null) {
-                        listener.onRectangleClick(key); // Passer l'ID du rectangle cliqué
-
-                    }
-
-                    return true; // Clic détecté, on arrête l'événement
-                }
-            }
-            return false;
-        }
-        if (!drawing){
-            return  false;
-        }
-
-        switch (event.getAction()) {
-            case MotionEvent.ACTION_DOWN:
-                startX = event.getX();
-                startY = event.getY();
-                isDrawingFinished = false;
-                return true;
-
-            case MotionEvent.ACTION_MOVE:
-                if (!fixed) {
-                    endX = event.getX();
-                    endY = event.getY();
-                    // Mettre à jour un rectangle temporaire en cours de dessin
-                    rectanglesTemp.put(-1, new RectF(
-                            Math.min(startX, endX), Math.min(startY, endY),
-                            Math.max(startX, endX), Math.max(startY, endY)
-                    ));
-                    invalidate();
-                }
-                return true;
-
-            case MotionEvent.ACTION_UP:
-                if (!fixed) {
-                    RectF rect = new RectF(
-                            Math.min(startX, endX), Math.min(startY, endY),
-                            Math.max(startX, endX), Math.max(startY, endY)
-                    );
-                    rectangles.put(this.id, rect);
-                    rectanglesTemp.clear();
-                    fixed = true;
-                    drawing=false;
-                    isDrawingFinished=true;
-                    invalidate();
-                }
-                return true;
-        }
-        return false;
-    }
-
-    public  void setDrawing(int idDest){
-        drawing = true;
-        id = idDest;
-    }
-
-    public void setOnRectangleClickListener(OnRectangleClickListener listener) {
-        this.listener = listener;
-    }
-
-    public interface OnRectangleClickListener {
-        void onRectangleClick(int rectangleId);
-    }
-}
diff --git a/app/src/main/java/fr/ul/projet/DrawingView.java b/app/src/main/java/fr/ul/projet/DrawingView.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6484b81f8356bedb8e419cff29958183a1c4601
--- /dev/null
+++ b/app/src/main/java/fr/ul/projet/DrawingView.java
@@ -0,0 +1,154 @@
+package fr.ul.projet;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.PorterDuff;
+import android.graphics.RectF;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DrawingView extends View {
+    private Path drawPath;
+    private OnRectangleDrawnListener rectangleDrawnListener;
+
+    private Paint drawPaint;
+    private Bitmap canvasBitmap, backgroundBitmap;
+    private Canvas drawCanvas;
+    private float startX, startY, endX, endY;
+    private boolean isDrawing = false;
+    private boolean isDrawingEnabled = false;
+    private List<RectF> rectangles = new ArrayList<>();
+
+    public interface OnRectangleDrawnListener {
+        void onRectangleDrawn(float startX, float startY, float endX, float endY);
+    }
+
+    public void setOnRectangleDrawnListener(OnRectangleDrawnListener listener) {
+        this.rectangleDrawnListener = listener;
+    }
+
+    public DrawingView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        setupDrawing();
+    }
+
+    private void setupDrawing() {
+        drawPath = new Path();
+        drawPaint = new Paint();
+        drawPaint.setColor(Color.RED); // Couleur du trait
+        drawPaint.setAntiAlias(true);
+        drawPaint.setStrokeWidth(10);
+        drawPaint.setStyle(Paint.Style.STROKE);
+    }
+
+    public void enableDrawing(boolean enable) {
+        isDrawingEnabled = enable;
+    }
+
+    public void setImageBitmap(Bitmap bitmap) {
+        backgroundBitmap = bitmap;
+        canvasBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
+        drawCanvas = new Canvas(canvasBitmap);
+        drawCanvas.drawBitmap(backgroundBitmap, 0, 0, null);
+        invalidate();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        if (canvasBitmap != null) {
+            canvas.drawBitmap(canvasBitmap, 0, 0, null);
+            for (RectF rect : rectangles) {
+                canvas.drawRect(rect, drawPaint);
+            }
+
+            // Dessiner le rectangle en cours de tracé
+            if (isDrawing) {
+                canvas.drawRect(new RectF(startX, startY, endX, endY), drawPaint);
+            }
+        }
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+
+        float touchX = event.getX();
+        float touchY = event.getY();
+
+        if (!isDrawingEnabled){
+            for (RectF rect : rectangles) {
+                if (rect.contains(touchX, touchY)) {
+                    onRectangleClicked(rect);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+
+
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                startX = touchX;
+                startY = touchY;
+                isDrawing = true;
+                break;
+            case MotionEvent.ACTION_MOVE:
+                endX = touchX;
+                endY = touchY;
+                invalidate(); // Mettre à jour l'affichage
+                break;
+            case MotionEvent.ACTION_UP:
+                isDrawing = false;
+                RectF newRect = new RectF(startX, startY, endX, endY);
+                rectangles.add(newRect); // ✅ Ajouter le rectangle à la liste
+                drawCanvas.drawRect(newRect, drawPaint);
+                invalidate();
+                isDrawingEnabled = false;// Mettre à jour l'affichage
+
+                if (rectangleDrawnListener != null) {
+                    rectangleDrawnListener.onRectangleDrawn(startX, startY, endX, endY);
+                }
+                break;
+        }
+        return true;
+    }
+
+    public Bitmap getDrawing() {
+        return canvasBitmap;
+    }
+
+    public Bitmap getFinalBitmap() {
+        Bitmap resultBitmap = Bitmap.createBitmap(backgroundBitmap.getWidth(), backgroundBitmap.getHeight(), Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(resultBitmap);
+        canvas.drawBitmap(backgroundBitmap, 0, 0, null);
+        canvas.drawBitmap(canvasBitmap, 0, 0, null);
+        return resultBitmap;
+    }
+
+    private void onRectangleClicked(RectF rect) {
+        System.out.println("Rectangle cliqué : " + rect);
+    }
+
+    public void addRectangleFromCoords(float startX, float startY, float endX, float endY) {
+        RectF rect = new RectF(startX, startY, endX, endY);
+        rectangles.add(rect);
+        drawCanvas.drawRect(rect, drawPaint);
+        invalidate();
+    }
+
+    public void clear(){
+        rectangles.clear();
+        drawCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
+        invalidate();
+    }
+
+}
diff --git a/app/src/main/java/fr/ul/projet/ModeleActivity.java b/app/src/main/java/fr/ul/projet/ModeleActivity.java
index 8adb021b68ca85ebda0808e2992f92f2afed9055..b85d915aa2523be1ff35621dd1333816e487f47c 100644
--- a/app/src/main/java/fr/ul/projet/ModeleActivity.java
+++ b/app/src/main/java/fr/ul/projet/ModeleActivity.java
@@ -49,6 +49,10 @@ public class ModeleActivity extends AppCompatActivity {
         TextView textView = findViewById(R.id.textView);
         textView.setText(this.modele.getNom());
 
+        if (this.getIntent().getExtras().getInt("supp") == 1){
+            this.modele.supprimerPiece(this.modele.getPieceCourante().getId());
+        }
+
         afficherPieces();
 
         ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.create), (v, insets) -> {
@@ -63,6 +67,7 @@ public class ModeleActivity extends AppCompatActivity {
                 new ActivityResultCallback<ActivityResult>() {
                     @Override
                     public void onActivityResult(ActivityResult result){
+
                     }
                 }
         );
diff --git a/app/src/main/java/fr/ul/projet/PieceActivity.java b/app/src/main/java/fr/ul/projet/PieceActivity.java
index 8178da2720e6a98248be5d4d7660d0a9be85f9ed..a49b72049b3c3772009bfa9b97557902cd030f71 100644
--- a/app/src/main/java/fr/ul/projet/PieceActivity.java
+++ b/app/src/main/java/fr/ul/projet/PieceActivity.java
@@ -111,6 +111,13 @@ public class PieceActivity extends AppCompatActivity {
         this.modele = getIntent().getParcelableExtra("modele");
         this.piece = this.modele.getPieceCourante();
 
+        Button suppPiece = findViewById(R.id.suppPiece);
+        suppPiece.setOnClickListener(v->{
+            Intent intent = new Intent(PieceActivity.this, ModeleActivity.class);
+            intent.putExtra("modele", this.modele);
+            intent.putExtra("supp", 1);
+            launcher.launch(intent);
+        });
 
 
 
diff --git a/app/src/main/java/fr/ul/projet/modele/Acces.java b/app/src/main/java/fr/ul/projet/modele/Acces.java
index 487394387f073372353f23768c71f029efb45c30..6c0149a27cab7a4a2d6a6268226e2ce02486f494 100644
--- a/app/src/main/java/fr/ul/projet/modele/Acces.java
+++ b/app/src/main/java/fr/ul/projet/modele/Acces.java
@@ -3,6 +3,9 @@ package fr.ul.projet.modele;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import org.json.JSONArray;
+import org.json.JSONObject;
+
 import java.util.Map;
 
 import fr.ul.projet.outils.FabriqueIdentifiant;
@@ -10,11 +13,11 @@ import fr.ul.projet.outils.FabriqueIdentifiant;
 public class Acces implements Parcelable {
 
     private int id;
-    private int xCoinHautGauche, yCoinHautGauche;
-    private int xCoinBasDroite, yCoinBasDroite;
+    private float xCoinHautGauche, yCoinHautGauche;
+    private float xCoinBasDroite, yCoinBasDroite;
     private Piece destination;
 
-    public Acces(Piece dest, int x1, int y1, int x2, int y2){
+    public Acces(Piece dest, float x1, float y1, float x2, float y2){
         this.destination = dest;
         this.xCoinHautGauche = x1;
         this.yCoinHautGauche = y1;
@@ -23,12 +26,21 @@ public class Acces implements Parcelable {
         this.id = FabriqueIdentifiant.getInstance().getCptAcces();
     }
 
+    public Acces(){
+        this.destination = null;
+        this.xCoinHautGauche = 0;
+        this.yCoinHautGauche = 0;
+        this.xCoinBasDroite = 0;
+        this.yCoinBasDroite = 0;
+        this.id = -1;
+    }
+
     public Acces(Parcel in){
         this.id = in.readInt();
-        this.xCoinHautGauche = in.readInt();
-        this.yCoinHautGauche = in.readInt();
-        this.xCoinBasDroite = in.readInt();
-        this.yCoinBasDroite = in.readInt();
+        this.xCoinHautGauche = in.readFloat();
+        this.yCoinHautGauche = in.readFloat();
+        this.xCoinBasDroite = in.readFloat();
+        this.yCoinBasDroite = in.readFloat();
         this.destination = in.readParcelable(Piece.class.getClassLoader());
     }
 
@@ -47,10 +59,10 @@ public class Acces implements Parcelable {
     @Override
     public void writeToParcel(Parcel dest, int flags){
         dest.writeInt(this.id);
-        dest.writeInt(this.xCoinHautGauche);
-        dest.writeInt(this.yCoinHautGauche);
-        dest.writeInt(this.xCoinBasDroite);
-        dest.writeInt(this.yCoinBasDroite);
+        dest.writeFloat(this.xCoinHautGauche);
+        dest.writeFloat(this.yCoinHautGauche);
+        dest.writeFloat(this.xCoinBasDroite);
+        dest.writeFloat(this.yCoinBasDroite);
         dest.writeParcelable(this.destination, flags);
     }
 
@@ -63,35 +75,39 @@ public class Acces implements Parcelable {
         return this.id;
     }
 
-    public int getXCoinBasDroite() {
+    public void setId(int id){
+        this.id = id;
+    }
+
+    public float getXCoinBasDroite() {
         return this.xCoinBasDroite;
     }
 
-    public void setxCoinBasDroite(int xCoinBasDroite) {
+    public void setxCoinBasDroite(float xCoinBasDroite) {
         this.xCoinBasDroite = xCoinBasDroite;
     }
 
-    public int getXCoinHautGauche() {
+    public float getXCoinHautGauche() {
         return this.xCoinHautGauche;
     }
 
-    public void setxCoinHautGauche(int xCoinHautGauche) {
+    public void setxCoinHautGauche(float xCoinHautGauche) {
         this.xCoinHautGauche = xCoinHautGauche;
     }
 
-    public int getYCoinBasDroite() {
+    public float getYCoinBasDroite() {
         return this.yCoinBasDroite;
     }
 
-    public void setyCoinBasDroite(int yCoinBasDroite) {
+    public void setyCoinBasDroite(float yCoinBasDroite) {
         this.yCoinBasDroite = yCoinBasDroite;
     }
 
-    public int getYCoinHautGauche() {
+    public float getYCoinHautGauche() {
         return this.yCoinHautGauche;
     }
 
-    public void setyCoinHautGauche(int yCoinHautGauche) {
+    public void setyCoinHautGauche(float yCoinHautGauche) {
         this.yCoinHautGauche = yCoinHautGauche;
     }
 
@@ -102,4 +118,21 @@ public class Acces implements Parcelable {
     public void setDestination(Piece destination) {
         this.destination = destination;
     }
+
+    public JSONObject toJson(){
+        JSONObject acces = new JSONObject();
+        try{
+            acces.put("id", this.getId());
+            acces.put("xCoinHautGauche", this.getXCoinHautGauche());
+            acces.put("yCoinHautGauche",  this.getYCoinHautGauche());
+            acces.put("xCoinBasDroit",  this.getXCoinBasDroite());
+            acces.put("yCoinBasDroit",  this.getYCoinBasDroite());
+            acces.put("destination", this.getDestination().getId());
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return acces;
+    }
 }
diff --git a/app/src/main/java/fr/ul/projet/modele/Modele.java b/app/src/main/java/fr/ul/projet/modele/Modele.java
index 516dee700be2ec82695387da7c8722949cf0d3e7..d05cc5f367ebdc2602cd4a8b3c82d1093b956282 100644
--- a/app/src/main/java/fr/ul/projet/modele/Modele.java
+++ b/app/src/main/java/fr/ul/projet/modele/Modele.java
@@ -301,7 +301,7 @@ public class Modele implements Parcelable{
      * @param x2            Coordonnée x du coin bas droit du rectangle représenant l'accès
      * @param y2            Coordonnée y du coin bas droit du rectangle représenant l'accès
      */
-    public void ajouterAcces(Piece destination, int x1, int y1, int x2, int y2){
+    public void ajouterAcces(Piece destination, float x1, float y1, float x2, float y2){
         this.getPieceCourante().ajouterAcces(destination, x1, y1, x2, y2);
     }
 
@@ -309,7 +309,7 @@ public class Modele implements Parcelable{
      * Méthode qui supprime un accès en fonction de son id
      * @param idAcces   Id de l'accès à supprimer
      */
-    public void supprimerAcces(String idAcces){
+    public void supprimerAcces(int idAcces){
         this.getPieceCourante().supprimerAcces(idAcces);
     }
 
@@ -432,7 +432,19 @@ public class Modele implements Parcelable{
                     piece.setPhotoEst(Uri.parse(pieceJson.getString("cheminPhotoEst")));
                     piece.setPhotoOuest(Uri.parse(pieceJson.getString("cheminPhotoOuest")));
                     this.pieces.put(piece.getId(), piece);
-                    Log.i("nom piece", piece.getNom());
+                    String accesJsonString = pieceJson.getString("accès");
+                    JSONArray accessJson = new JSONArray(accesJsonString);
+                    for (int j=0; j<accessJson.length(); j++){
+                        JSONObject accesJson = accessJson.getJSONObject(j);
+                        Acces acces = new Acces();
+                        acces.setId(accesJson.getInt("id"));
+                        acces.setxCoinHautGauche(accesJson.getLong("xCoinHautGauche"));
+                        acces.setyCoinHautGauche(accesJson.getLong("yCoinHautGauche"));
+                        acces.setxCoinBasDroite(accesJson.getLong("xCoinBasDroit"));
+                        acces.setyCoinBasDroite(accesJson.getLong("yCoinBasDroit"));
+                        acces.setDestination(getPieces().get(accesJson.getInt("destination")));
+                        piece.ajouterAcces(acces.getDestination(), acces.getXCoinHautGauche(), acces.getYCoinHautGauche(), acces.getXCoinBasDroite(), acces.getYCoinBasDroite());
+                    }
                 }
             } catch (Exception e){
                 e.printStackTrace();
diff --git a/app/src/main/java/fr/ul/projet/modele/Piece.java b/app/src/main/java/fr/ul/projet/modele/Piece.java
index 72a6ac9ca017c00ac179e086f683994ca26ef52a..ec3fc5c5e60810fac3fac2ab3e2401d55e115546 100644
--- a/app/src/main/java/fr/ul/projet/modele/Piece.java
+++ b/app/src/main/java/fr/ul/projet/modele/Piece.java
@@ -4,6 +4,7 @@ import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import org.json.JSONArray;
 import org.json.JSONObject;
 
 import java.util.HashMap;
@@ -155,12 +156,12 @@ public class Piece implements Parcelable {
         return this.acces;
     }
 
-    public void ajouterAcces(Piece destination, int x1, int y1, int x2, int y2){
+    public void ajouterAcces(Piece destination, float x1, float y1, float x2, float y2){
         Acces acc = new Acces(destination, x1, y1, x2, y2);
         this.getAcces().put(acc.getId(), acc);
     }
 
-    public void supprimerAcces(String idAcces){
+    public void supprimerAcces(int idAcces){
         this.getAcces().remove(idAcces);
     }
 
@@ -169,10 +170,17 @@ public class Piece implements Parcelable {
         try{
             piece.put("id", this.getId());
             piece.put("nom", this.getNom());
-            piece.put("cheminPhotoNord", this.getPhotoNord() == null ?  "" : this.getPhotoNord().getPath());
-            piece.put("cheminPhotoSud", this.getPhotoNord() == null ?  "" : this.getPhotoSud().getPath());
-            piece.put("cheminPhotoEst", this.getPhotoNord() == null ?  "" : this.getPhotoEst().getPath());
-            piece.put("cheminPhotoOuest", this.getPhotoNord() == null ?  "" : this.getPhotoOuest().getPath());
+            piece.put("cheminPhotoNord", this.getPhotoNord() == null ?  "" : this.getPhotoNord().toString());
+            piece.put("cheminPhotoSud", this.getPhotoSud() == null ?  "" : this.getPhotoSud().toString());
+            piece.put("cheminPhotoEst", this.getPhotoEst() == null ?  "" : this.getPhotoEst().toString());
+            piece.put("cheminPhotoOuest", this.getPhotoOuest() == null ?  "" : this.getPhotoOuest().toString());
+
+            JSONArray acces = new JSONArray();
+            for (Acces a : this.acces.values()){
+                acces.put(a.toJson());
+            }
+            piece.put("accès", acces);
+
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/app/src/main/java/fr/ul/projet/outils/GestionImage.java b/app/src/main/java/fr/ul/projet/outils/GestionImage.java
new file mode 100644
index 0000000000000000000000000000000000000000..e9418bd2bc0961b1e0eedaff9f09fab88dfd4948
--- /dev/null
+++ b/app/src/main/java/fr/ul/projet/outils/GestionImage.java
@@ -0,0 +1,45 @@
+package fr.ul.projet.outils;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.graphics.RectF;
+import android.net.Uri;
+import android.widget.ImageView;
+
+import java.io.InputStream;
+
+public class GestionImage {
+    public static Bitmap getBitmapFromUri(Context context, Uri uri) {
+        try {
+            ContentResolver resolver = context.getContentResolver();
+            InputStream inputStream = resolver.openInputStream(uri);
+            return BitmapFactory.decodeStream(inputStream);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    // 🔹 Redimensionner le Bitmap pour l'adapter à l'ImageView
+    public static Bitmap getResizedBitmap(Bitmap original, ImageView imageView) {
+        int viewWidth = imageView.getWidth();
+        int viewHeight = imageView.getHeight();
+        if (viewWidth == 0 || viewHeight == 0) return original; // Éviter erreurs
+
+        Bitmap resizedBitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(resizedBitmap);
+
+        // Adapter l'image à l'ImageView en conservant les proportions
+        Matrix matrix = new Matrix();
+        RectF src = new RectF(0, 0, original.getWidth(), original.getHeight());
+        RectF dst = new RectF(0, 0, viewWidth, viewHeight);
+        matrix.setRectToRect(src, dst, Matrix.ScaleToFit.CENTER);
+        canvas.drawBitmap(original, matrix, null);
+
+        return resizedBitmap;
+    }
+}
diff --git a/app/src/main/res/layout/activity_acces.xml b/app/src/main/res/layout/activity_acces.xml
index c7d2703d3498dfa67d55c53e7b8fb36245447f1b..3b5b308a0493687148c5625c893bc1ce7be741f7 100644
--- a/app/src/main/res/layout/activity_acces.xml
+++ b/app/src/main/res/layout/activity_acces.xml
@@ -32,7 +32,7 @@
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintVertical_bias="0.951" />
 
-    <fr.ul.projet.DrawableImageView
+    <ImageView
         android:id="@+id/imageView"
         android:layout_width="399dp"
         android:layout_height="248dp"
@@ -42,6 +42,18 @@
         app:layout_constraintTop_toTopOf="parent"
         tools:srcCompat="@tools:sample/backgrounds/scenic"/>
 
+    <fr.ul.projet.DrawingView
+        android:id="@+id/drawingView"
+        android:layout_width="399dp"
+        android:layout_height="248dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:background="@android:color/transparent"
+        tools:layout_editor_absoluteY="246dp"
+        />
+
 
     <TextView
         android:id="@+id/textView2"
@@ -62,8 +74,19 @@
         android:text="@string/boutonAcces"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0.727" />
+
+    <Button
+        android:id="@+id/suppAcces"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/suppAcces"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.498"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.745" />
+        app:layout_constraintVertical_bias="0.797" />
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_piece.xml b/app/src/main/res/layout/activity_piece.xml
index bff8bc723b209ecce553f20c431c43abc727079d..13f9cdb64b4ee4d7e0f383afe8162deb101d292c 100644
--- a/app/src/main/res/layout/activity_piece.xml
+++ b/app/src/main/res/layout/activity_piece.xml
@@ -58,4 +58,16 @@
 
     </LinearLayout>
 
+    <Button
+        android:id="@+id/suppPiece"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/suppPiece"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.498"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0.689" />
+
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 80beabfac9b11f49790d5bb73a4e50f3f715fac5..66d4e4be35fd666c7d05798b73315096a7de4247 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -36,6 +36,7 @@
     <string name="prendrePhoto">Prendre une photo</string>
     <string name="selecPhoto">Séléctionner une photo</string>
     <string name="ajoutAcces">Ajouter un accès</string>
+    <string name="suppAcces">Supprimer accès</string>
     <string name="zeroPieces">Aucune pièce à accéder</string>
     <string name="pieceDest">Choisir une pièce de destination</string>
     <string name="choixDir">Choisir une direction</string>
@@ -45,4 +46,5 @@
     <string name="cardS">Sud</string>
     <string name="cardE">Est</string>
     <string name="cardO">Ouest</string>
+    <string name="suppPiece">Supprimer la pièce</string>
 </resources>
\ No newline at end of file