Page 1 sur 1

Re: Grande image

Publié : mar. 13/oct./2015 0:23
par Ar-S
J'ai généré une image en 21000 x 21000 en pb 5.31x86
à 22k ça ne marche pas avec ma config
Peut être est-ce du à la RAM ? (8mo et pleins d'applis d'ouvertes)

Image
ps:chaque carré de couleur fait 350x350

Code : Tout sélectionner

Enumeration 5
  #imagebig
EndEnumeration

L = 21000
H = 21000
Ncase = L/60

UseJPEGImageEncoder()
 If OpenWindow(0, 0, 0, 256, 256, "CreateImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

    If CreateImage(#imagebig, L, H, 24, RGB(255,205,155))
      StartDrawing(ImageOutput(#imagebig))
        For i = 0 To 59
          Box(n,n,Ncase,Ncase,RGB(Random(255),Random(255),Random(255)))
          n+Ncase
        Next
      
      StopDrawing()
    EndIf
    
    SaveImage(#imagebig,"big.jpg",#PB_ImagePlugin_JPEG,8)
    
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
   EndIf
En tout cas la doc peut effectivement être mise à jour

Re: Grande image

Publié : mar. 13/oct./2015 7:35
par blendman
SAlut Spock.

Tu dois ouvrir une image de 16000*16000 ou tu dois la créer ?

Si tu dois la créer, :
- tu crées 4 images plus petites (par exemple 8096*8096) et ce sont ces images ensuite que tu gères (dans des tableaux ou autre).

Si tu dois l'ouvrir, là c'est plus délicat. Je crois qu'il faut connaître le format du fichier que tu veux ouvrir pour pouvoir l'ouvrir par morceau.
J'avoue que je ne saurais pas comment ouvrir une image aussi grande, à moins de découper ton image d'abord en petits morceaux dans un soft qui le permet (mais c'est une bidouille pas terrible).

EDIT : en parcourant les liens que tu fournis, il semble qu'on puisse ouvrir des images très grandes (Freak a testé du 23000*23000), après ça dépend de ton ordi, de ta ram, etc...

Re: Grande image

Publié : mar. 13/oct./2015 10:45
par Fred
La limite de 2GB, c'est pas le poids, c'est la taille du tableau en memoire (limite theorique). Pour calculer la taille de ton image en memoire:

hauteur * largeur * 4 (vu que PB gere en 32-bit interieurement).

Il faut un bloc de memoire continu donc pour les grosses images en x86, c'est peu problable que ca marche. En x64, ca devrait le faire.

Ex:

Code : Tout sélectionner

Debug CreateImage(0, 25000, 25000)
ne marche pas en x86, mais fonctionne en x64.

Re: Grande image

Publié : mar. 13/oct./2015 11:34
par blendman
Chez moi, en x64, créer, sauvegarder ou ouvrir une image qui fait 25000*25000 ça fonctionne sans problème. Ce n'est même pas si long que ça (mois de 30 secondes par opération environ), pourtant mon ordi n'est pas rapide ^^.

Code : Tout sélectionner

UsePNGImageDecoder()
UsePNGImageEncoder()

If save = 1
    img = CreateImage(#PB_Any, 25000, 25000)
    If IsImage(img)
        If SaveImage(img,"test.png",#PB_ImagePlugin_PNG)
            Debug "ok"
        EndIf
        FreeImage(img)
    EndIf
    
Else
    img = LoadImage(#PB_Any,"test.png")
    If img <> 0
        Debug "ok"
        FreeImage(img)
    EndIf
EndIf

Re: Grande image

Publié : mar. 13/oct./2015 12:54
par Fred
moi aussi ca marche sans probleme en x64. Une vingtaine de secondes pour creer et encoder en PNG, c'est correct.