import io
import os
from pathlib import Path
from PIL import Image, ImageQt
import axipy
from PySide2.QtCore import QByteArray, QBuffer, QIODevice
from PySide2.QtGui import QPixmap, QImage


def save_qimage_via_buffer(q_image: QImage, file_path: str):
    # Сохраняем QImage во внутренний буфер Qt в формате PNG
    byte_array = QByteArray()
    buffer = QBuffer(byte_array)
    buffer.open(QIODevice.WriteOnly)
    q_image.save(buffer, "PNG")

    # Передаем байты в io.BytesIO и открываем через Pillow
    io_buffer = io.BytesIO(byte_array.data())
    pil_img = Image.open(io_buffer)

    # Пересохраняем как TIFF
    pil_img.save(file_path, format="TIFF")

path_out_tif=r"E:\Temp\test_rf.tif"
name_map_view='Карта: SubjectRF'
all_map_view=axipy.view_manager.mapviews
map_view=next((m_view for m_view in all_map_view if m_view.title == name_map_view), None)

if map_view is not None:
    if Path(path_out_tif).exists():
        os.remove(path_out_tif)

    width=map_view.position.width()
    height=map_view.position.height()
    map=map_view.map
    q_image_map=map.to_image(width, height)
    save_qimage_via_buffer(q_image_map, path_out_tif)
    jkl=0

