Suite

Copie raster : la taille du bit de sortie ne correspond pas à la valeur spécifiée

Copie raster : la taille du bit de sortie ne correspond pas à la valeur spécifiée


Utilisation d'ArcGIS (Carte/Catalogue) 10.0. J'ai un fichier raster (kdens) développé à partir de données ponctuelles à l'aide de l'outil de densité du noyau. C'est un format de fichier flottant 32 bits. J'ai besoin de ce fichier converti en un fichier de formes de polygones. (Notez que j'ai utilisé l'outil Math/Times pour conserver les unités décimales dans un nouveau raster : kdens100K). À l'aide de l'outil de copie de raster, j'ai spécifié le raster de sortie sur 32 bits non signé. Cependant, le raster en sortie est identifié comme un signe 16 bits lorsque je vérifie les propriétés du raster et les valeurs raster sont tronquées pour correspondre à la plage de valeurs 16 bits.

Avez-vous une idée de la raison pour laquelle la sortie est formatée en 16 bits signé lorsque je spécifie 32 bits non signé ?


Lorsqu'un jeu de données LAS est spécifié en entrée, tous les points de données des fichiers LAS auxquels il fait référence seront traités. Un sous-ensemble de données lidar peut également être sélectionné par ses codes de classification, ses indicateurs de classification et ses valeurs de retour en appliquant les filtres de points LAS souhaités via une couche de jeu de données LAS. Les filtres peuvent être définis via la boîte de dialogue des propriétés de la couche ou l'outil Créer une couche de jeu de données LAS.

La couche du jeu de données LAS peut également être utilisée pour contrôler l'application des entités de contrainte de surface qui peuvent être référencées par le jeu de données LAS.

Lors de l'exportation d'un raster volumineux, envisagez de spécifier le type de données en sortie sous forme d'entier à économiser sur l'espace disque si les exigences de précision de vos valeurs z sont telles qu'elles peuvent être représentées par des données entières.

Il est fortement recommandé d'inclure une limite de zone d'étude en tant que contrainte de découpage dans la définition du jeu de données LAS en entrée. L'une des raisons est d'empêcher l'interpolation de se produire en dehors de l'étendue réelle des données de l'enquête. Deuxièmement, l'utilisation d'options de voisinage naturel peut entraîner de graves problèmes de performances si la zone de données n'est pas correctement définie.

Lorsque vous utilisez BINNING, seules les contraintes de découpage, d'effacement et de remplacement sont respectées. Les lignes de rupture et les points d'ancrage ne le sont pas. L'option de triangulation respecte tous les types de contraintes mais prend plus de temps à s'exécuter.


7.11 Fonctions raster

Cette bibliothèque contient des fonctions de manipulation de blocs rectangulaires de bits en mémoire. Les routines suivantes sont disponibles à cet effet :

v_get_pixel Obtient l'état du pixel (défini ou effacé, couleur)
vq_hilite_color Obtient une couleur de surbrillance
vq_max_color Obtient la valeur de couleur maximale pour une opération de raster additive
vq_min_color Obtient la valeur de couleur minimale pour une opération raster soustractive
vq_weight_color Obtient une pondération pour la fonction de mélange
vr_clip_rects_by_dst Coupe le rectangle de destination avec un rectangle de découpage
vr_clip_rects_by_src Coupe le rectangle source avec un rectangle de découpage
vr_clip_rects32_by_dst Coupe le rectangle de destination avec un rectangle de découpage (coordonnées 32 bits)
vr_clip_rects32_by_src Coupe le rectangle source avec un rectangle de découpage (coordonnées 32 bits)
vr_transfer_bits Combine deux bitmaps
vr_trnfm Transforme le raster en formats spécifiques à l'appareil et vice versa
vro_cpyfm Copie ('blits') un écran ou un bloc de mémoire d'un endroit à un autre (opaque)
vrt_cpyfm Copie ('blits') un écran ou un bloc mémoire d'un endroit à un autre (transparent)
vs_hilite_color Définit la couleur de surbrillance
vs_max_color Définit la valeur de couleur maximale pour une opération de raster additive
vs_min_color Définit la valeur de couleur minimale pour une opération raster soustractive
vs_poids_couleur Définit la pondération pour la fonction de mélange

Noter: Avec ces fonctions il est notamment possible de copier ou déplacer une zone d'écran d'un endroit à un autre grâce à cela on peut obtenir un défilement fluide dans les programmes GEM, par exemple.

7.11.1 v_get_pixel

Nom: Get pixel - Renvoie la valeur de couleur d'un pixel.
Code opération : 105
Syntaxe: void v_get_pixel ( int16_t handle, int16_t x, int16_t y, int16_t *pel, int16_t *index )
La description: L'appel v_get_pixel obtient la valeur du pixel et l'indice de couleur d'un pixel pour des résolutions jusqu'à 256 couleurs (8 plans). Les conditions suivantes s'appliquent :
Paramètre Sens
manipuler Identifiant du poste de travail
X Coordonnée X du pixel
oui Coordonnée Y du pixel
peler Valeur en pixels
indice Indice de couleur

Noter: L'indice de couleur est compris comme le nombre qui peut être spécifié pour les fonctions d'attribut du VDI. La valeur de pixel, d'autre part, représente le contenu réel de la mémoire d'écran.

7.11.2 Liaisons pour v_get_pixel

Adresse Élément Contenu
contrôle contrôle[0] 105 # Code opération de la fonction
contrôle+2 contrôle[1] 1 # Entrée en ptsin
Ctrl+4 contrôle[2] 0 # Entrée dans ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 2 # Saisie en intout
Ctrl+12 contrôle[6] manipuler
ptsin ptsin[0] X
ptsin+2 ptsin[1] oui
entrée entrée[0] peler
entrée+2 entrée[1] indice

7.11.3 vq_hilite_color

7.11.4 Liaisons pour vq_hilite_color

Adresse Élément Contenu
contrôle contrôle[0] 209 # Code opération de la fonction
contrôle+2 contrôle[1] 0 # Entrée en ptsin
Ctrl+4 contrôle[2] 0 # Entrée dans ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 6 # Saisie en intout
contrôle+10 contrôle[5] 0 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
entrée entrée[0..1] Valeur de retour
entrée+4 entrée[2..5] hilite_color

7.11.5 vq_max_color

7.11.6 Liaisons pour vq_max_color

Adresse Élément Contenu
contrôle contrôle[0] 209 # Code opération de la fonction
contrôle+2 contrôle[1] 0 # Entrée en ptsin
Ctrl+4 contrôle[2] 0 # Entrée dans ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 6 # Saisie en intout
contrôle+10 contrôle[5] 2 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
entrée entrée[0..1] Valeur de retour
entrée+4 entrée[2..5] max_color

7.11.7 vq_min_color

7.11.8 Liaisons pour vq_min_color

Adresse Élément Contenu
contrôle contrôle[0] 209 # Code opération de la fonction
contrôle+2 contrôle[1] 0 # Entrée en ptsin
Ctrl+4 contrôle[2] 0 # Entrée dans ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 6 # Saisie en intout
contrôle+10 contrôle[5] 1 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
entrée entrée[0..1] Valeur de retour
entrée+4 entrée[2..5] min_color

7.11.9 vq_weight_color

7.11.10 Liaisons pour vq_weight_color

Adresse Élément Contenu
contrôle contrôle[0] 209 # Code opération de la fonction
contrôle+2 contrôle[1] 0 # Entrée en ptsin
Ctrl+4 contrôle[2] 0 # Entrée dans ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 6 # Saisie en intout
contrôle+10 contrôle[5] 3 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
entrée entrée[0..1] Valeur de retour
entrée+4 entrée[2..5] poids_couleur

7.11.11 vr_clip_rects32_by_dst

7.11.12 Liaisons pour vr_clip_rects32_by_dst

C : int16_t vr_clip_rects32_by_dst ( poignée int16_t, RECT32 *dst_clip_rect, RECT32 *src_rect, RECT16 *dst_rect, RECT32 *clipped_src_rect, RECT32 *clipped_dst_rect )
Contraignant:
GEM-Arrays :
Adresse Élément Contenu
contrôle contrôle[0] 171 # Code opération de la fonction
contrôle+2 contrôle[1] 12 # Saisie en ptsin
Ctrl+4 contrôle[2] 8 # Saisie en ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 1 # Saisie en intout
contrôle+10 contrôle[5] 2 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
ptsin ptsin[0..7] dst_clip_rect
ptsin+16 ptsin[8.15] src_rect
ptsin+32 ptsin[16..23] dst_rect
ptsout ptsout[0..7] clipped_src_rect
ptsout+16 ptsout[8.15] clipped_dst_rect
entrée entrée[0] Valeur de retour

7.11.13 vr_clip_rects32_by_src

7.11.14 Liaisons pour vr_clip_rects32_by_src

C : int16_t vr_clip_rects32_by_src ( int16_t handle, RECT32 *src_clip_rect, RECT32 *src_rect, RECT16 *dst_rect, RECT32 *clipped_src_rect, RECT32 *clipped_dst_rect )
Contraignant:
GEM-Arrays :
Adresse Élément Contenu
contrôle contrôle[0] 171 # Code opération de la fonction
contrôle+2 contrôle[1] 12 # Saisie en ptsin
Ctrl+4 contrôle[2] 8 # Saisie en ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 1 # Saisie en intout
contrôle+10 contrôle[5] 3 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
ptsin ptsin[0..7] src_clip_rect
ptsin+16 ptsin[8.15] src_rect
ptsin+32 ptsin[16..23] dst_rect
ptsout ptsout[0..7] clipped_src_rect
ptsout+16 ptsout[8.15] clipped_dst_rect
entrée entrée[0] Valeur de retour

7.11.15 vr_clip_rects_by_dst

7.11.16 Liaisons pour vr_clip_rects_by_dst

C : int16_t vr_clip_rects_by_dst ( poignée int16_t, RECT16 *dst_clip_rect, RECT16 *src_rect, RECT16 *dst_rect, RECT16 *clipped_src_rect, RECT16 *clipped_dst_rect )
Contraignant:
GEM-Arrays :
Adresse Élément Contenu
contrôle contrôle[0] 171 # Code opération de la fonction
contrôle+2 contrôle[1] 6 # Saisie en ptsin
Ctrl+4 contrôle[2] 4# Saisie en ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 1 # Saisie en intout
contrôle+10 contrôle[5] 0 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
ptsin ptsin[0..3] dst_clip_rect
ptsin+8 ptsin[4.7] src_rect
ptsin+16 ptsin[8.11] dst_rect
ptsout ptsout[0..3] clipped_src_rect
ptsout+8 ptsout[4.7] clipped_dst_rect
entrée entrée[0] Valeur de retour

7.11.17 vr_clip_rects_by_src

7.11.18 Liaisons pour vr_clip_rects_by_src

C : int16_t vr_clip_rects_by_src ( poignée int16_t, RECT16 *src_clip_rect, RECT16 *src_rect, RECT16 *dst_rect, RECT16 *clipped_src_rect, RECT16 *clipped_dst_rect )
Contraignant:
Tableaux GEM :
Adresse Élément Contenu
contrôle contrôle[0] 171 # Code opération de la fonction
contrôle+2 contrôle[1] 6 # Saisie en ptsin
Ctrl+4 contrôle[2] 4 # Saisie en ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 1 # Saisie en intout
contrôle+10 contrôle[5] 1 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
ptsin ptsin[0..3] src_clip_rect
ptsin+8 ptsin[4.7] src_rect
ptsin+16 ptsin[8.11] dst_rect
ptsout ptsout[0..3] clipped_src_rect
ptsout+8 ptsout[4.7] clipped_dst_rect
entrée entrée[0] Valeur de retour

7.11.19 vr_transfer_bits

Nom: Transférer le bitmap - Combinez deux bitmaps.
Code opération : 170 (Sous-Opcode 0)
Syntaxe: void vr_transfer_bits( int16_t handle, GCBITMAP *src_bm, GCBITMAP *dst_bm, RECT16 *src_rect, RECT16 *dst_rect, int16_t mode )
La description: L'appel vr_transfer_bit combine deux bitmaps, en utilisant la mise à l'échelle si nécessaire.
Paramètre Sens
manipuler Identifiant du poste de travail
src_bm Bitmap source
dst_bm Bitmap de destination
src_rect Rectangle source
dst_rect Rectangle de destination
mode Mode de fonction de transfert

La fonction vr_transfer_bit combine le bitmap sourcesrc_bm avec le bitmap de destination dst_bm, où mode spécifie la fonction de transfert. Le rectangle source est passé dans src_rect et le rectangle de destination dans dst_rect. Les coordonnées ici sont spécifiées (comme pour toutes les autres fonctions VDI) sous forme de valeurs discrètes.

Si les rectangles source et destination n'ont pas la même taille, vr_transfer_bit redimensionnera le bitmap source. Pour les réductions, les données bitmap seront interpolées si la source contient des valeurs de couleurs directes (16 ou 32 bits) ou si la sortie se fait avec dithering.

Si les bitmaps source et destination n'ont pas le même format de pixel ou la même profondeur de couleur, les données source sont transformées automatiquement dans le format de destination (le bitmap source restera bien entendu inchangé).

Si src_bm ou alors dst_bm est 0, alors le bitmap du poste de travail manipuler est utilisé respectivement comme source ou destination de l'opération. Pour la sortie à l'écran, un programme doit passer 0 pour dst_bm dans tous les cas et ne pas essayer de construire sa propre description bitmap. L'écrêtage n'est appliqué que pour le bitmap de destination (et cela uniquement si le bitmap de destination est le bitmap du poste de travail).

Dans la liste suivante, les constantes des modes de transfert passés en mode sont définis. Dans les commentaires le type d'opération est spécifié en notation symbolique ('src' est le pixel source, 'dst' est le pixel de destination, 'bg_col' est la valeur en pixel de la couleur de fond, 'hilite_col' est la valeur en pixel du couleur utilisée pour l'accent):

Noter: Dans les modes de transfert arithmétique, la source et la destination ne sont pas combinées en fonction de leurs valeurs de pixels, mais leurs valeurs de couleur (RVB) sont ajoutées ou soustraites en fonction de leur combinaison, .

Dans la description symbolique ci-dessous, 'RVB( x )' est la valeur de couleur RVB d'un pixel et 'PIXELVALUE( rgb )' est la valeur de pixel d'une valeur de couleur RVB. 'MAX( rgb_a, rgb_b )' renvoie les composantes maximales de deux valeurs de couleur RVB 'MIN( rgb_a, rgb_b )' renvoie de la même manière les composantes minimales. 'max_rgb' est une valeur de couleur RVB maximale, 'min_rgb' est une valeur de couleur RVB minimale. 'pondération' est une valeur comprise entre 0 et 1,0 qui spécifie le mélange des couleurs source et destination.

De plus, pour tous les modes de transfert, on peut affecter le type de combinaison par l'ajout d'une des constantes suivantes :

'T_DITHER_MODE' conduit à l'utilisation d'une fonction de diffusion d'erreurs si le bitmap de destination a 256 couleurs ou moins (de plus, une interpolation sera effectuée pour les réductions dans ce cas afin que les détails de l'image réduite ne soient pas complètement perdus).

Si les palettes source et destination sont égales (ou si la palette source est un sous-ensemble de la palette de couleurs système), NVDI utilise (automatiquement) une fonction de transfert plus rapide en interne sans tramage.

Si un mode logique est appelé avec 'T_COLORIZE', le type de colorisation appliqué dépend du mode :

Pour les modes T_REPLACE, T_TRANSPARENT, T_HILITE et T_REVERS_TRANSPARENT la colorisation n'agit pas de manière binaire sur les valeurs de couleurs ou de pixels, mais les valeurs de couleurs sont mises à l'échelle à la place. L'exemple suivant montre comment une valeur de couleur est colorisée 'bg_col', 'fg_col', 'src' et 'dst' sont des valeurs de couleur RVB (entre 0 et 65535) :

Noter: Actuellement, la colorisation dans les modes T_REPLACE, T_TRANSPARENT, T_HILITE et T_REVERS_TRANSPARENT n'est prise en charge que pour les bitmaps sources jusqu'à 256 couleurs. Pour les bitmaps source avec des profondeurs de 16 ou 32 bits, il n'y a actuellement aucune prise en charge de la colorisation dans ces modes.

Les modes de transfert arithmétique ne prennent en charge aucune colorisation.

Au lieu d'une MFDB archaïque, cette fonction attend une structure GCBITMAP pour décrire les bitmaps.

Si 'ctab' vaut 0L, la table de couleurs système correspondant à la profondeur de bits sera utilisée pour l'appel (si le bitmap a plus de 8 bits par pixel, c'est-à-dire qu'il utilise des valeurs de couleurs directes, 'ctab' peut également être mis à 0 ).

Les bitmaps source ne nécessitent pas de table de couleurs inverses ici, 'itab' peut être défini sur 0L. Pour un bitmap de destination autogéré, il faut demander une référence à une table de couleurs inverses à partir du VDI (et à un stade ultérieur également le relâcher).

Cas particuliers simplifiés

Si la source n'a pas de table de couleurs (0L), la table de couleurs de l'appareil sera utilisée si celle-ci a la même résolution. Si ce n'est pas le cas, la table des couleurs du système pour la résolution en bits de la source sera utilisée.

Si la destination n'a pas de table de couleurs (inverse), la table de couleurs (inverse) de l'appareil sera utilisée si celle-ci a la même profondeur de bits. Si ce n'est pas le cas, la table de couleurs système pour la profondeur de bits de la destination sera utilisée, et une table de couleurs inverses supplémentaire sera construite en interne pour l'appel. Cela signifie qu'il est impératif que les bitmaps de destination qui n'ont pas de table de couleurs inverses aient la même profondeur de bits que le périphérique appartenant au descripteur VDI.

Noter: Il est recommandé que pour les bitmaps hors écran, v_open_bm ou v_opnbm soit utilisé pour créer un bitmap par le VDI, afin de ne pas avoir à s'occuper de la gestion des tables de couleurs et des tables de couleurs inverses dans ce cas.

Pour pouvoir convertir des bitmaps entre différentes profondeurs de bits et formats de pixels, vr_transfer_bit nécessite une description du format de pixel, qui est contenue dans l'élément de structure 'px_format' de GCBITMAP. L'accumulation de ce vecteur de bits est décrite dans la liste suivante, cependant, les programmeurs peuvent trouver les formats prédéfinis d'un intérêt primordial :

7.11.20 Liaisons pour vr_transfer_bits

Adresse Élément Contenu
contrôle contrôle[0] 170 # Code opération de la fonction
contrôle+2 contrôle[1] 4 # Saisie en ptsin
Ctrl+4 contrôle[2] 0 # Entrée dans ptsout
Ctrl+6 contrôle[3] 4 # Entrée en intin
Ctrl+8 contrôle[4] 0 # Saisie en intout
contrôle+10 contrôle[5] 0 # Sous-code opération
Ctrl+12 contrôle[6] manipuler
contrôle+14 contrôle[7..8] src_bm
contrôle+18 contrôle[9..10] dst_bm
contrôle+22 contrôle[11..12] 0
intin intin[0] mode
intin+2 intin[1] 0
intin+4 intin[2] 0
ptsin ptsin[0..3] src_rect
ptsin+8 ptsin[4.7] dst_rect

7.11.21 vr_trnfm

Nom: Transform form - Transforme une mémoire d'image raster
Code opération : 110
Syntaxe: void vr_trnfm ( int16_t handle, MFDB *psrcMFDB, MFDB *pdesMFDB )
La description: L'appel vr_trnf transforme un bloc de mémoire d'image raster du format standard en un format dépendant du périphérique et vice versa. Les conditions suivantes s'appliquent :
Paramètre Sens
manipuler Identifiant du poste de travail
psrcMFDB Pointeur vers la source MFDB
pdesMFDB Pointeur vers la MFDB de destination

Le format standard mentionné ci-dessus est un format de données indépendant de la plate-forme, qui peut donc être utilisé pour échanger des données entre divers systèmes GEM.

7.11.22 Liaisons pour vr_trnfm

Adresse Élément Contenu
contrôle contrôle[0] 110 # Code opération de la fonction
contrôle+2 contrôle[1] 0 # Entrée en ptsin
Ctrl+4 contrôle[2] 0 # Entrée dans ptsout
Ctrl+6 contrôle[3] 0 # Entrée en intin
Ctrl+8 contrôle[4] 0 # Saisie en intout
Ctrl+12 contrôle[6] manipuler
contrôle+14 contrôle[7,8] psrcMFDB
contrôle+18 contrôle[9,10] pdesMFDB

7.11.23 vro_cpyfm

Nom: Copier raster, opaque - Copier un bloc mémoire.
Code opération : 109
Syntaxe: void vro_cpyfm ( int16_t handle, int16_t vr_mode, int16_t *pxyarray, MFDB *psrcMFDB, MFDB *pdesMFDB )
La description: L'appel vro_cpyfm copie un bloc mémoire source vers une destination et pendant cela combine la source S et la destination D par la liaison logique décodée dans vr_mode. Les conditions suivantes s'appliquent :
Paramètre Sens
manipuler Identifiant du poste de travail
vr_mode L'une des 16 opérations logiques entre les pixels des rasters source et de destination :
TOUT BLANC 0 D := 0
S_AND_D 1 D := S ET D
S_AND_NOTD 2 D := S ET (PAS D)
S_ONLY 3 D := S
NOTS_AND_D 4 D := (PAS S) ET D
D_UNIQUEMENT 5 D := D
S_XOR_D 6 D := S XOR D
S_OR_D 7 D := S OU D
PAS_SORD 8 D := PAS (S OU D)
NOT_SXORD 9 D := NON (S XOR D)
D_INVERSER 10 D := PAS D
PAS_D 11 D := S OU (PAS D)
S_OR_NOTD 12 D := PAS S
NOTS_OR_D 13 D := (PAS S) OU D
NOT_SANDD 14 D := PAS (S ET D)
TOUT NOIR 15 D := 1

Noter: Si les tailles des deux rasters ne correspondent pas, la taille du raster source sera utilisée. L'adresse du raster de destination dans ce cas sert uniquement de pointeur. Si les adresses des zones source et destination correspondent (et si elles sont non nulles) et si les deux zones se chevauchent, alors le rectangle source ne sera pas modifié tant que le rectangle destination n'aura pas été copié.

vro_cpyfm ignore généralement la hauteur et la largeur du rectangle de destination et utilise la taille de la source. Si vous souhaitez mettre à l'échelle un bitmap, vous devez définir le bit le plus significatif dans le mode de transfert (vr_mode | 0x8000). Dans ce cas, vro_cpyfm met à l'échelle le bitmap en fonction de la taille du rectangle de destination. La capacité du pilote à évoluer ou non est renvoyée par vq_extnd dans work_out[30] (vous n'êtes autorisé à définir le bit supérieur du mode que s'il en est capable).

Important: Rasters au format standard ne peut et ne doit pas être copié, car en général, on n'a aucune information sur le format spécifique à l'appareil. Par conséquent, la fonction vr_trnfm doit être utilisée si nécessaire.

7.11.24 Liaisons pour vro_cpyfm

Adresse Élément Contenu
contrôle contrôle[0] 109 # Code opération de la fonction
contrôle+2 contrôle[1] 4 # Saisie en ptsin
Ctrl+4 contrôle[2] 0 # Entrée dans ptsout
Ctrl+6 contrôle[3] 1 # Entrée en intin
Ctrl+8 contrôle[4] 0 # Saisie en intout
Ctrl+12 contrôle[6] manipuler
contrôle+14 contrôle[7,8] psrcMFDB
contrôle+18 contrôle[9,10] pdesMFDB
intin intin[0] vr_mode
ptsin ptsin[0..7] pxyarray[0..7]

7.11.25 vrt_cpyfm

Noter: Si les dimensions des rasters ne correspondent pas, la taille du raster source et le coin supérieur gauche du raster de destination seront utilisés comme point de départ. L'écran peut jamais être spécifié comme raster source.

Habituellement, vrt_cpyfm ignore la hauteur et la largeur du rectangle de destination et utilise la taille de la source. Si vous souhaitez mettre à l'échelle un bitmap, vous devez définir le bit le plus significatif dans le mode de transfert (vr_mode | 0x8000). Dans ce cas, vrt_cpyfm met à l'échelle le bitmap en fonction de la taille du rectangle de destination. La capacité du pilote à évoluer ou non est renvoyée par vq_extnd dans work_out[30] (vous n'êtes autorisé à définir le bit supérieur du mode que s'il en est capable).


3 réponses 3

Ai-je raison de supposer ce qui précède ?

Non, vous ne l'êtes pas. Vous montrez un manuel/RSA brut, qui n'est guère plus qu'une exponentiation modulaire. Pour être sécurisé, RSA doit utiliser des méthodes de remplissage. Sans remplissage, RSA générerait en effet le même texte chiffré à chaque fois. Cela seul briserait les exigences de sécurité d'un chiffrement. Il existe de nombreuses autres attaques contre le manuel RSA. Heureusement, le code auquel vous vous êtes lié spécifie le cryptage OAEP, qui est supposé être sécurisé.

Si oui, où est $n$ et quel est le format de stockage du message ?

$n$ ne fait pas partie du texte chiffré. Il fait cependant partie à la fois de la clé publique et de la clé privée. Le format de sortie de RSA/OAEP est simplement un tableau d'octets de la même taille - en octets - que le module, presque impossible à distinguer du hasard. Dans votre cas, il est codé en base 64, ce qui est nécessaire si vous souhaitez stocker ou envoyer le texte chiffré sous forme de texte imprimable. Voir aussi la réponse à votre dernière question ci-dessous.

Si non, quelle est la bonne méthode ?

La méthode utilisée dans le code, OAEP, est spécifiée dans PKCS#1 v2.1 et 2.2 de RSA labs. Comme ces normes changent constamment d'emplacement, j'utilise généralement la RFC 3447 à la place.

La sortie est de 172 caractères à chaque fois ? Comment ça marche ?

La sortie du cryptage RSA est bien entendu toujours inférieure au module. Dans le cadre de l'algorithme PKCS#1, il est soumis à la transformation I2OSP (voir la RFC). Cela code le nombre résultant du calcul en une chaîne d'octets (ou un tableau d'octets) de la même taille que le module, en octets. Pour être précis, il est transformé en un codage big endian aligné sur les octets, de taille statique, non signé.

Vous voyez maintenant la sortie en Base 64. Cela signifie qu'elle se compose de $(172 / 4) * 3 = 129$ octets. Cependant, il y a un caractère de remplissage = , ce qui signifie un texte chiffré de 128 octets ou un texte chiffré de 1024 bits. Cela signifie que votre module et donc la taille de votre clé est également de 1024 bits. Vous devez passer à une taille de clé supérieure.

Si le remplissage est différent à chaque fois, ne devrait-il pas être mentionné ou la longueur du message réel doit-elle être mentionnée avec le texte chiffré afin que le code de déchiffrement puisse différencier le remplissage du message réel ?

L'astuce est que d'abord le texte chiffré est converti en nombre, puis après l'exponentiation modulaire, le message en texte clair rembourré apparaît. Le rembourrage est auto-descriptif, ce n'est pas le cas juste caractères aléatoires.

J'ai également découvert que je ne pouvais pas crypter plus de 86 caractères. Pourquoi? Le nombre de caractères par RSA est-il limité ?

Il y a une quantité relativement élevée de rembourrage, y compris ledit surcoût. Ainsi, le type et la quantité minimale de remplissage déterminent la limite qui peut être chiffrée à l'aide d'un seul chiffrement « bloc » de RSA. Habituellement, une clé de données symétrique aléatoire est cryptée, qui à son tour crypte le texte en clair. C'est parce que RSA est très inefficace. Ce type de protocole est appelé cryptosystème hybride. Au lieu de RSA compatible PKCS#1, RSA KEM pourrait également être utilisé pour le cryptage.

En cryptant le même texte brut, j'obtiens deux sorties différentes.

C'est en fait un objectif de conception des systèmes de chiffrement : un adversaire qui voit deux textes chiffrés ne devrait pas être en mesure de dire s'ils sont égaux - ce serait une fuite d'informations. Même les systèmes de cryptage qui seraient autrement sécurisés utilisent un vecteur d'initialisation ou une autre valeur unique similaire (souvent aléatoire) lors du cryptage (généralement un IV est nécessaire à d'autres fins).

C'est manuel RSA. Textbook RSA est l'opération mathématique fondamentale derrière les cryptosystèmes RSA, mais en l'état, ce n'est pas une bonne primitive de sécurité. En raison de sa structure mathématique simple, il permet d'effectuer certaines transformations mathématiques qui peuvent permettre des attaques telles que le décryptage d'un texte chiffré $C_1$ à partir de la connaissance d'un autre texte chiffré $C_2$ et du texte clair correspondant $P_2$ (ce qui peut être facile à réaliser si l'adversaire peut demander le cryptage d'un $P_2$ de son choix). RSA en tant que cryptosystème est construit sur le manuel RSA plus un schéma de remplissage. L'opération de remplissage effectue des transformations qui cassent la structure mathématique et ainsi cassent les attaques basées sur cette structure.

Il existe trois schémas de remplissage standard pour RSA, connus sous le nom de « PKCS#1 v1.5 » (d'après le nom du document qui le décrit utilisé à la fois pour le cryptage et pour la signature), PSS (utilisé pour la signature) et OAEP (pour le cryptage) . PKCS#1 v1.5 ne doit pas être utilisé dans les nouveaux protocoles, car il présente des défauts, bien que les défauts soient beaucoup moins graves que le manuel RSA.

Étant donné que ni $X$ (texte clair) ni $e$ (clé publique) ne changent, je suppose que $n$ change à chaque fois.

Non, $n$ fait partie de la clé publique ($e$ est l'exposant public la clé publique est $(n,e)$). Cela ne change pas. Ce qui change, c'est le rembourrage, qui comprend une partie aléatoire.

Ainsi, si $n$ change à chaque fois, pour que le déchiffrement connaisse la valeur de $n$, il doit être transmis avec le message lui-même.

$n$ ne change pas. Le remplissage change, mais le déchiffrement supprime le remplissage de toute façon (après avoir vérifié qu'il est valide).

La sortie est de 172 caractères à chaque fois ? Comment ça marche ?

La sortie que vous voyez est évidemment un encodage base64. Avec 172 caractères et le dernier étant = , c'est une représentation d'une chaîne de 128 octets.

La sortie d'une opération RSA est un nombre de l'ordre de $[0,n)$, codé sous forme de chaîne d'octets (le codage du nombre en octets est standardisé). Pour une clé de 1024 bits, vous obtenez un résultat de 128 octets.


4 réponses 4

Pour lancer l'impression à partir de la 27e ligne à partir de la ligne correspondante (incluse) au lieu de la 3e, changez simplement 3 en 27.

Le programme awk suivant devrait faire le travail :

  • Au début, initialisez un "status flag" n avec -1 , signifiant "en dehors du bloc de données".
  • Lorsqu'une ligne composée uniquement de la chaîne DATA_POINTS est rencontrée, définissez n sur 0 , ce qui signifie que "la ligne suivante contient le nombre de points de données"
  • Lorsque n est égal à zéro, le contenu de la ligne est interprété comme un nombre de points de données et stocké dans n . La longueur de ce nombre (en caractères/chiffres) est stockée dans un champ w utilisé pour formater la sortie plus tard.
  • Lorsque n est supérieur à 0 , indiquant que nous sommes à l'intérieur du bloc "data", imprimez la "key" avec la variable de comptage i (formatée pour une largeur fixe à l'aide de w et ajustée à gauche comme dans votre exemple de sortie) et le 6ème champ de la ligne, jusqu'à ce que i est égal à n , auquel point n est remis à -1

Cela a probablement plus de fonctionnalités que vous n'en avez besoin, dans la mesure où il peut gérer des blocs de données qui ne sont pas situés à la fin du fichier (il respecte le nombre de lignes de données spécifiées dans l'en-tête, plutôt que de lire jusqu'à la fin du fichier ).

Noter que la méthode pour trouver DATA_POINTS est actuellement une correspondance de chaîne complète, qui est la méthode la plus robuste si la chaîne réelle peut contenir des caractères spéciaux. Si vous souhaitez une correspondance de chaîne partielle ou une correspondance d'expression régulière, utilisez soit

De plus, si vous voulez éviter une mauvaise interprétation des lignes vides, remplacez n>0 et n==0 par n>0&&NF et n==0&&NF , respectivement.


3 réponses 3

Illustrator n'a pas du tout de résolution, pas les graphiques vectoriels. Si vous concevez pour l'impression, vous devez imprimer le contenu vectoriel. Il vous suffit donc d'enregistrer votre conception au format PDF et le préprocesseur de votre imprimante pixellisera automatiquement l'image à la résolution la plus élevée possible pour cette imprimante !

Maintenant, les clients ont demandé une unité de pixel dans Illustrator, mais les pixels n'ont pas de taille a (ni les rectangles de pixels). Les développeurs * ont donc dû truquer un peu, de sorte que cette unité est réglée sur un 72e de pouce.

Si vous exportez avec enregistrer pour le web ou alors enregistrer pour les appareils illustrator suppose que vous avez conçu votre conception en nombre de pixels, car ces périphériques et ces flux de travail ne se soucient pas vraiment de la valeur de votre pas de pixel car cela n'a d'importance que pour un périphérique de sortie physique (imprimante). Tout le reste n'est pas sain d'esprit. Revenant à la définition ci-dessus. Ni l'un ni l'autre n'est destiné aux images prêtes à imprimer.

Mais si vous enregistrez votre travail avec Exportation il suppose que votre papier a une taille physique réelle, et il demande maintenant la valeur PPI. Il a maintenant vraiment exporté à ce PPI sans tenir compte d'une taille de pixel est de 72 DPI.

Solutions alternatives :

  • Vous pouvez ouvrir des documents AI dans Photoshop. Ils se comportent comme l'exportation mais ont une limite supérieure en nombre de pixels plus grande.
  • Vous pouvez ouvrir des images AI dans n'importe quel outil PDF (à moins que vous ne désactiviez la compatibilité PDF des fichiers AI), comme le script fantôme, vous pouvez à nouveau pixelliser à votre guise.

* Quant à savoir si Adobe aurait dû le faire ou non, c'est difficile à dire. Même commencer la discussion avec la plupart des concepteurs est un peu futile car ils ne comprennent pas DPI/PPI. De plus, tout cela est un peu hors de propos dans un langage de description de page car il est possible d'avoir plusieurs valeurs PPI dans un document. En tout cas, il y a 3 façons de voir cette chose.


FAQ / Problèmes courants¶

Comment trouver le code EPSG pour la projection de mes données ?

Si vous connaissez certains des paramètres de la projection de vos données, vous pouvez utiliser l'outil de recherche sur https://epsg.io/ pour trouver le code EPSG associé à vos données. L'accueil officiel de l'EPSG permet désormais également d'effectuer une recherche textuelle ou cartographique d'une projection : https://epsg.org/

Pour la version PROJ >= 6 : les codes EPSG sont stockés dans une base de données SpatiaLite proj.db généralement situé dans /usr/local/share/proj/ sur les systèmes Unix et dans C:/PROJ/ ou C:/PROJ/NAD dans les systèmes Windows (selon l'installation), en particulier /MS4W/proj/nad/ pour les utilisateurs MS4W .

Pour la version PROJ < 6 : vous pouvez parcourir le fichier « epsg » fourni avec PROJ et rechercher une définition de projection qui correspond à la projection de vos données. C'est un simple fichier texte et le code EPSG est entre crochets (<…>) au début de chaque ligne. Le fichier « epsg » se trouve généralement dans /usr/local/share/proj/ sur les systèmes Unix et dans C:/PROJ/ ou C:/PROJ/NAD sur les systèmes Windows (selon l'installation). Les utilisateurs MS4W trouveront le fichier epsg dans /MS4W/proj/nad/.

Mon serveur WMS génère l'erreur « msProcessProjection() : aucune liste système, errno : . »

C'est probablement PROJ qui se plaint de ne pas pouvoir trouver le EPSG fichier de définition de projection (pour la version PROJ < 6), ou le proj.db (pour la version PROJ >= 6). Assurez-vous que vous avez installé PROJ et que le proj.db fichier (ou EPSG selon votre version locale de PROJ) est installé au bon endroit. Sous Unix, il doit être sous /usr/local/share/proj/, et sous Windows PROJ le recherche sous C:/PROJ/ ou C:/PROJ/NAD (selon l'installation), les utilisateurs MS4W trouveront le fichier dans /MS4W/proj/nad/. Vous devriez également vérifier la documentation d'erreur pour voir si votre erreur exacte est discutée.

Si vous n'avez pas le proj.db fichier (ou EPSG fichier) alors vous pouvez l'obtenir dans le cadre de la distribution PROJ à https://proj.org/ Alternativement, vous pouvez télécharger manuellement le PROJ < 6 EPSG fichier sur http://www.maptools.org/dl/proj4-epsg.zip.

Comment fonctionnent les projections AUTO ?

Lorsqu'un client WMS appelle un serveur WMS avec une projection automatique, il doit spécifier le SRS sous la forme : AUTO : proj_id,unit_id,lon0,lat0 où :

proj_id est l'un des 42001, 42002, 42003, 42004 ou 42005 (seules cinq projections automatiques sont actuellement définies).

unit_id est toujours 9001 pour les compteurs. (Il n'est pas certain que quelqu'un prenne en charge d'autres unités.)

lon0 et lat0 sont les coordonnées à utiliser comme origine pour la projection.

Lorsque vous utilisez une projection AUTO dans WMS GetCapabilities, vous n'incluez que la chaîne "AUTO:42003" dans vos métadonnées wms_srs, vous n'incluez pas les paramètres de projection. Ceux-ci sont ajoutés par l'application (client) au moment de l'exécution en fonction de la vue cartographique. Par exemple:


Color Direction Finder (un radiogoniomètre basé sur une cascade)

La boîte de dialogue de configuration du fichier wave peut être ouverte via le menu principal, sélectionnez Options . Paramètres de fichier audio (anciennement paramètres de fichier Wave ).

Options d'enregistrement : Options pour enregistrer l'audio entrant ou sortant sous forme de fichier (*.wav ou *.ogg).
'Utiliser un fichier RAW au lieu du format WAVE' Le format par défaut (qui devrait être suffisant pour la plupart des applications) est l'audio WAVE - pas l'audio 'raw'. Lorsque vous commencez à enregistrer l'audio via le fichier (Fichier..Fichiers et flux audio..Enregistrer XYZ en tant que fichier audio), le type de fichier peut en fait être sélectionné via la boîte de dialogue de sélection de fichier).

'Autoriser des morceaux supplémentaires dans les en-têtes' Cette option doit être définie pour un post-traitement précis
- il utilise des « morceaux » supplémentaires dans l'en-tête d'onde RIFF, par exemple un horodatage précis pour le premier échantillon du fichier, et éventuellement d'autres spécialités. Well-behaving programs will not have any difficulty to skip these non-standard chunks. otherwise, turn off this option, but then you will not have accurate timestamps, GPS data, or other parameters available for post-processing.

'Don't save until timestamps are valid' If this option is checked, the audio-saving process won't start until accurate timestamps are available (from a GPS receiver or similar). This is important only for very special applications, for example when recordings from different sites are to be aligned / combined by the timestamps (in the sampled data). This option prevents recording 'useless' data, for example if audio samples are available, but the GPS receiver has not locked in yet.

'Save extra data in auxiliary files' Saves some 'extra' data (timestamps, GPS data, etc) in an extra file. Only necessary when the post-processing software is unable to process wave-files which contain additonal information (besides the sampled data).

'Decimate saved audio samples to NNNN samples/second' Helps to reduce the size of logged audio files, if the logged bandwidth doesn't need to be as large as the bandwidth covered by the audio input device. But since the support for Ogg/Vorbis, you'd better use this file format to reduce the disk space usage (because Ogg/Vorbis is a compressing audio format, which the normal 'wave audio' format is not).

16 or 24 bits per sample Only applies to wave files, but not for Ogg/Vorbis.


More about using wave files for logging and analysis can be found here . If you wonder about 'auxiliary' files (*.aux) being written along with wave files (*.wav), read this note about GPS data logging (to turn off AUX files, the GPS-'emission'-interval must be set to zero).
back to top


Bitmap images

Bitmap-, or raster [1] -, images are “ digital photographs ”, they are the most common form to represent natural images and other forms of graphics that are rich in detail. Bitmap images is how graphics is stored in the video memory of a computer. The term bitmap refers to how a given pattern of bits in a pixel maps to a specific color.

In the other chapters of introduction to image molding, raster images is the only topic.

Figure 1.3. Raster image

A bitmap images take the form of an array, where the value of each element, called a pixel picture element, correspond to the color of that portion of the image. Each horizontal line in the image is called a scan line .

The letter 'a' might be represented in a 12x14 matrix as depicted in Figure 3., the values in the matrix depict the brightness of the pixels (picture elements). Larger values correspond to brighter areas whilst lower values are darker.

Sampling

When measuring the value for a pixel, one takes the average color of an area around the location of the pixel. A simplistic model is sampling a square, this is called a box filter, a more physically accurate measurement is to calculate a weighted Gaussian average (giving the value exactly at the pixel coordinates a high weight, and lower weight to the area around it). When perceiving a bitmap image the human eye should blend the pixel values together, recreating an illusion of the continuous image it represents.

Raster dimensions

The number of horizontal and vertical samples in the pixel grid is called Raster dimensions , it is specified as width x height.

Resolution

Resolution is a measurement of sampling density, resolution of bitmap images give a relationship between pixel dimensions and physical dimensions. The most often used measurement is ppi, pixels per inch [2] .

Figure 1.4. Sampling grid

Megapixels

Megapixels refer to the total number of pixels in the captured image, an easier metric is raster dimensions which represent the number of horizontal and vertical samples in the sampling grid. An image with a 4:3 aspect ratio with dimension 2048x1536 pixels, contain a total of 2048x1535=3,145,728 pixels approximately 3 million, thus it is a 3 megapixel image.

Table 1.1. Common/encountered raster dimensions

DimensionsMegapixelsNomCommenter
640x4800.3VGAVGA
720x5760.4CCIR 601 DV PALDimensions used for PAL DV, and PAL DVDs
768x5760.4CCIR 601 PAL fullPAL with square sampling grid ratio
800x6000.4SVGA
1024x7680.8XGAThe currently (2004) most common computer screen dimensions.
1280x9601.2
1600x12002.1UXGA
1920x10802.11080i HDTVinterlaced, high resolution digital TV format.
2048x15363.12KTypically used for digital effects in feature films.
3008x19605.3
3088x20566.3
4064x270411.1
Scaling / Resampling

When we need to create an image with different dimensions from what we have we scale the image. A different name for scaling is resampling, when resampling algorithms try to reconstruct the original continous image and create a new sample grid.

Scaling image down

The process of reducing the raster dimensions is called decimation , this can be done by averaging the values of source pixels contributing to each output pixel.

Scaling image up

When we increase the image size we actually want to create sample points between the original sample points in the original raster, this is done by interpolation the values in the sample grid, effectivly guessing the values of the unknown pixels [3] .

Sample depth

The values of the pixels need to be stored in the computers memory, this means that in the end the data ultimately need to end up in a binary representation, the spatial continuity of the image is approximated by the spacing of the samples in the sample grid. The values we can represent for each pixel is determined by the sample format chosen.

Graphique 1.5. Sample depth

A common sample format is 8bit integers, 8bit integers can only represent 256 discrete values (2^8 = 256), thus brightness levels are quantized into these levels.

12bit

For high dynamic range images (images with detail both in shadows and highlights) 8bits 256 discrete values does not provide enough precision to store an accurate image. Some digital cameras operate with more than 8bit samples internally, higher end cameras (mostly SLRs) also provide RAW images that often are 12bit (2^12bit = 4096).

16bit

The PNG and TIF image formats supports 16bit samples, many image processing and manipulation programs perform their operations in 16bit when working on 8bit images to avoid quality loss in processing.

Floating point

Some image formats used in research and by the movie industry store floating point values. Both "normal" 32bit floating point values and a special format called moitié which uses 16bits/sample. Floating point is useful as a working format because quantization and computational errors are kept to a minimum until the final render.

Floating point representations often include HDR, High Dynamic Range . High Dynamic Range images are images that include sampling values that are whiter than white (higher values than 255 for a normal 8bit image). HDR allows representing the light in a scene with a greater degree of precision than LDR, Low Dynamic Range images.

Couleurs

The most common way to model color in Computer Graphics is the RGB color model, this corresponds to the way both CRT monitors and LCD screens/projectors reproduce color. Each pixel is represented by three values, the amount of red, green and blue. Thus an RGB color image will use three times as much memory as a gray-scle image of the same pixel dimensions.

One of the most common pixel formats used is 8bit rgb where the red, green and blue values are stored interleaved in memory. This memory layout is often referred to as chunky , storing the components in seperate buffers is called planar , and is not as common.

Palette / Indexed images

It was earlier common to store images in a palletized mode, this works similar to a paint by numbers strategy. We store just the number of the palette entry used for each pixel. And for each palette entry we store the amount of red, green and blue light.

Graphique 1.7. Indexed image

Image compression

Bitmap images take up a lot of memory, image compression reduces the amount of memory needed to store an image. For instance a 2.1 megapixel, 8bit RGB image (1600x1200) occupies 1600x1200x3 bytes = 5760000 bytes = 5.5 megabytes, this is the uncompressed size of the image.

Compression ratio is the ratio between the compressed image and the uncompressed image, if the example image mentioned above was stored as a 512kb jpeg file the compression ratio would be 0.5mb : 5.5mb = 1:11.

Lossless Image Compression

When an image is losslessly compressed, repetition and predictability is used to represent all the information using less memory. The original image can be restored. One of the simplest lossless image compression methods is run-length encoding. Run-length encoding encodes consecutive similar values as one token in a data stream.

Graphique 1.8. Run-length encoding

In Figure 1.8, “Run-length encoding” a black and white image of a house has been compressed with run length encoding, the bitmap is considered as one long string of black/or white pixels, the encoding is how many bytes of the same color occur after each other. We'll further reduce the amount of bytes taken up by these 72 numerical values by having a maximum span length of 15, and encoding longer spans by using multiple spans separated by zero length spans of the other color.

The new encoding is 113 nibbles long, a nibble i 4bit and can represent the value 0--4, thus we need 57 bytes to store all our values, which is less than the 93 bytes we would have needed to store the image as a 1bit image, and much less than the 750 bytes needed if we used a byte for each pixel. Run length encoding algorithms used in file formats would probably use additional means to compress the RLE stream achieved here.

Lossy Image Compression

Lossy image compression takes advantage of the human eyes ability to hide imperfection and the fact that some types of information are more important than others. Changes in luminance are for instance seen as more significant by a human observer than change in hue.

JPEG is a file format implementing compression based on the Discrete Cosine Transform DCT , together with lossless algorithms this provides good compression ratios. The way JPEG works is best suited for images with continuous tonal ranges like photographs, logos, scanned text and other images with lot's of sharp contours / lines will get more compression artifacts than photographs.

Loss through Generations

Lossy compression algorithms should not be used as a working format, only final copies should be saved as jpeg since loss accumulates over generations.

Graphique 1.9. JPEG generation loss

An image specially constructed to show the deficiencies in the JPEG compression algorithm, saved, reopened and saved again 9 times.

JPEG is most suited for photographics content where the adverse effect of the compression algorithm is not so evident.

JPEG is not suited as an intermediate format, only use JPEG for final distribution where filesize actually matters.


Scanning Size calculator

There is a larger dpi calculator that knows about scanning, printing, and enlargement.

Scanning any 6x4 inch photo will occupy the amounts of memory shown in the table below. I hope you realize that extreme resolution rapidly becomes impossible.

You may enter another resolution and scan size here, and it will also be calculated on the last line of the chart below. Seeing a result of NaN means that some input was Not a Number.

When people ask how to fix memory errors when scanning photos or documents at 9600 dpi, the answer is "don't do that" if you don't have 8 gigabytes of memory, and a 9600 dpi scanner, and have a special reason. It is normally correct to scan at 300 dpi to reprint at original size (600 dpi can help line art scans, but normally not if color or grayscale photos).

Saying that again: (is about a common first time error)

    You can set scanner Saisir film size and at 100% scale at 9x 300 = 2700 dpi. However, the 35mm film is aspect ratio 3:2 and the 8x10 print paper is aspect ratio 4:5, so the image will have to be cropped to match the paper shape. Either crop it here in the scanner Input size, or you can crop it later. See an easy procedure to crop an image to match the paper shape. Cropping later usually offers more choices.

The pixels are the same either way (A or B), about 2400 x 3000 pixels. If sending it out with instruction to print 8x10, it will be 8x10 either way. You do need sufficient pixels (reasonably close), but it need not be precisely 300 dpi, most shops will probably print at 250 dpi anyway.

  • Think of the scanner resolution field dpi as applying to the Output printing resolution. If the scale factor is 100%, then it is also equal to the scanning resolution, which is the common practice of planning to print an original size copy. If not 100%, then scanning resolution is the dpi entered x scaling factor . 300 dpi at 900% scale is 9x or 2700 dpi scanning resolution, creating enough pixels that the Output will print 9x size at 300 dpi.
  • You absolutely DO NOT want to set BOTH 8x10 inches and 2700 dpi, which would give 21600 x 27000 pixels (about 17 gigabytes). You have no use for 8x10 at 2700 dpi. This goal would be 8x10 inches Output at 300 dpi.

Notice that when you increase resolution, the size formula above multiplies the memory cost by that resolution number twice, in both width and height. The memory cost for an image increases as the square of the resolution. The square of say 300 dpi is a pretty large number (more than double the square of 200).

Scan resolution and print resolution are two very different things. The idea is that we might scan about 1x1 inch of film at say 2400 dpi, and then print it 8x size at 300 dpi at 8x8 inches. We always want to print photos at about 300 dpi, greater scan resolution is only for enlargement purposes.
The enlargement factor is Scanning resolution / printing resolution. A scan at 600 dpi will print 2x size at 300 dpi.
Emphasizing, unless it is small film to be enlarged, you do not want a high resolution scan of letter size paper. You may want a 300 dpi scan to reprint it at original size.

When we double the scan resolution, memory cost goes up 4 times. Multiply resolution by 3 and the memory cost increases 9 times, etc. So this seems a very clear argument to use only the amount of resolution we actually need to improve the image results for the job purpose. More than that is waste. It's often even painful. Well, virtual pain.  <grin>

Copyright © 1997-2021 by Wayne Fulton - All rights are reserved.