Questions sur les Images Raster

  1. FAQ
  2. »
  3. Présentation des produits
  4. »
  5. Questions sur les Images Raster

Comment puis-je ouvrir un fichier .dwg et le combiner avec un fichier image sur le dessin en cours de dessin? Je veux combiner les fichiers .dwg et .tif sur l'écran et les dessiner comme un fichier .png combiné sans l’enregistrer comme un fichier.

Le moyen le plus simple consiste à attacher l'arrière-plan de l'image à un fichier .dwg. L'arrière-plan de l'image peut être étiré pour remplir l'arrière-plan de la fenêtre entière, ou vous pouvez utiliser le carrelage de l'image. Si vous avez besoin d'un contrôle plus précis pour le positionnement raster, vous pouvez attacher l’entité d'image raster au fichier .dwg, mais vous devez l'effacer avant d'enregistrer ce fichier si vous n'aimez pas enregistrer le raster à l'intérieur du dessin. Vous pouvez également créer l'addition OdGsView et y attacher l’entité d'image raster transitoire. Dans ce cas, vous pourrez contrôler le positionnement de votre image raster.

ODA est-il capable de vectoriser les images raster?

Non, nous n'avons pas de fonctionnalité permettant de convertir le scan raster en dessin CAD (lignes, arcs, ...)

Comment puis-je lire un fichier .pdf, le convertir dans une image (bmp, jpeg, png) et puis l'enregistrer?

Pour convertir, vous pouvez regarder la fonction getThumbnail dans PdfiumWrapperImpl.cpp.

Pour enregistrer l'objet OdGiRasterImage dans un fichier, vous pouvez regarder la fonction createRasterImage dans DbDeviceDriver.cpp.

Comment puis-je générer un fichier .png avec un arrière-plan transparent?

Pour générer un fichier .png avec un arrière-plan transparent, utilisez le périphérique GLES2 car c'est le seul périphérique prenant en charge la transparence. Pour plus de détails, regardez l'exemple SimpleExportToRaster.

Pourquoi l'image raster exportée à partir d'un dessin est-elle vide?

Il existe les trois raisons possibles:

  • Impossible de localiser le fichier raster. Définissez un point d'arrêt sur votre méthode OdDbHostAppServices inheritor findFile() et voyez si le fichier peut être trouvé.
  • Le format d'image raster n'est pas pris en charge par le module RasterServices. Vérifiez tous les formats raster pris en charge dans l'énumération OdRxRasterServices::ImageType.
  • Module RasterServices manquant, ce qui est responsable de la gestion des fichiers raster.
    • Si vous utilisez une configuration de bibliothèques statiques, vous devez lier les bibliothèques RxRasterServices et FreeImage. Il est préférable de lier la bibliothèque de RasterProcessor également pour activer la conversion de format raster. Les services Raster doivent être enregistrés dans la carte des modules statiques:
      #if !defined(_TOOLKIT_IN_DLL_) || defined(__MWERKS__)
      ODRX_DECLARE_STATIC_MODULE_ENTRY_POINT(ExRasterModule);
      ODRX_DECLARE_STATIC_MODULE_ENTRY_POINT(OdRasterProcessingServicesImpl);
      ODRX_BEGIN_STATIC_MODULE_MAP()
      ODRX_DEFINE_STATIC_APPLICATION(RX_RASTER_SERVICES_APPNAME, ExRasterModule)
      ODRX_DEFINE_STATIC_APPLICATION(OdRasterProcessorModuleName,  OdRasterProcessingServicesImpl)
      ODRX_END_STATIC_MODULE_MAP()
      #endif // !defined(_TOOLKIT_IN_DLL_) || defined(__MWERKS__)
    • Si vous utilisez une configuration de bibliothèques dynamiques, tous les modules .tx qui ont été décrits doivent être tout à fait disponibles dans le répertoire de votre application.

Comment puis-je intégrer une image raster dans un dessin?

Il est possible de créer un objet OLE avec une image raster intégrée. Pour plus de détails, regardez le fichier Dessin/Examples/ExCommands/ExInsertRaster.cpp/ Drawing/Examples/ExCommands/ExInsertRaster.cpp, qui implémente une commande pour créer une entité OLE.

Comment puis-je définir la résolution d'une image bitmap rendue?

Vous pouvez définir la résolution d'un périphérique de rendu bitmap à l'aide de la méthode OdGsDevice::onSize(). Pour plus d'informations, veuillez vous référer à l'application exemple OdVectorizeEx (Drawing/Examples/OdVectorizeEx/OdVectorizeEx.cpp).

Comment puis-je spécifier le format de fichier d’une image raster tout en exportant un dessin?

Vous pouvez spécifier le format d'image raster en utilisant le paramètre Type de la méthode RxRasterServices::saveRasterImage(). Ou, si ce Type n'a pas été spécifié, vous pouvez utiliser l'extension de fichier.

Pour plus d'informations, veuillez vous référer à l'application exemple RasterExport: (Kernel/Exports/RasterExport/Source/RasterExportCmd.cpp).

Quels formats raster sont pris en charge par le framework ODA pour l'importation/l'exportation?

Tous les formats raster pris en charge sont répertoriés dans l'énumération OdRxRasterServices::ImageType.

Comment puis-je définir la qualité JPEG tout en exportant un fichier .dwg vers une image raster?

Vous pouvez contrôler la qualité de compression JPEG dans la méthode OdRxRasterServices::convertRasterImage():

const OdUInt32 flagsChain[3] = { OdRxRasterServices::kJpegQuality, 85, 0 };
if (pRasSvcs->convertRasterImage( pRaster, OdRxRasterServices::kJPEG, pStreamBuf, flagsChain))
{
...
}

La qualité est définie en pourcentage:

  • < 20 : mauvaise qualité
  • 20 < 40 : qualité moyenne
  • 40 < 60 : qualité normale
  • 60 < 80 : bonne qualité (par défaut)
  • >= 80 : meilleure qualité

Comment puis-je charger le nom de fichier d’une image raster dans un dessin?

Pour accéder au nom d'un fichier raster chargé dans un dessin, utilisez la méthode OdGiRasterImage::sourceFileName() ou celle de OdDbRasterImageDef::sourceFileName() en fonction du niveau d'accès à la base de données.

Comment puis-je ajouter une image raster dans un dessin?

Pour apprendre à ajouter des images raster dans un dessin, veuillez vous référer à la méthode DbFiller::addImage() dans l'application exemple OdWriteEx: (Drawing/Examples/OdWriteEx/DbFiller.cpp).

Comment puis-je masquer la bordure d'une image raster ajoutée dans un dessin?

Pour masquer le cadre de bordure des images ajoutées, utilisez l'un des fragments de code suivants:

OdDbRasterVariablesPtr pRVars = OdDbRasterVariables::openRasterVariables(pDb->database(), OdDb::kForWrite);
pRVars->setImageFrame(OdDbRasterVariables::kImageFrameOff);

ou

OdResBufPtr val = OdResBuf::createObject();
val->setRestype(OdResBuf::kRtInt16);
val->setInt16(0);
pDb->setSysVar(OD_T("IMAGEFRAME"), val);

Comment puis-je définir la position, la hauteur et la largeur d'une image raster ajoutée dans un dessin?

Vous pouvez définir la position, la hauteur et la largeur de l'image avec la méthode OdDbRasterImage::setOrientation(). Pour plus d'informations, veuillez vous référer à la méthode DbFiller::addImage() dans l'application exemple OdWriteEx: (Drawing/Examples/OdWriteEx/DbFiller.cpp).