Próiseáil Íomhá & Tiontú trí Foinse Oscailte C++ API
Léigh, Scríobh & Tiontaigh Formáidí Íomhánna Coitianta Ar nós PNG, JPEG, BMP, TIFF & go leor eile trí Leabharlann C++ In Aisce.
Is leabharlann chumhachtach próiseála íomhá í OpenImageIO a thugann an cumas d’fhorbróirí bogearraí formáidí comhaid íomhá a bhfuil tóir orthu a léamh, a scríobh agus a phróiseáil laistigh d’fheidhmchláir C++. Soláthraíonn sé tacaíocht do roinnt formáidí íomhá tóir trí fhorlíontáin. Soláthraíonn sé tacaíocht d’fhormáidí íomhá coitianta mar OpenEXR, TIFF, JPEG/JFIF, PNG, BMP, JPEG-2000, ICO, PNM, DPX, IFF, Field3D, Ptex, Photoshop PSD, GIF & go leor eile.
Úsáidtear leabharlann OpenImageIO go forleathan i stiúideonna beochana agus VFX ar fud an domhain agus tá sé comhtháite freisin i go leor táirgí tráchtála. Tagann leabharlann OpenImageIO le roinnt uirlisí íomhá ordú-líne a léiríonn gnéithe cosúil le formáidí íomhá a thiontú go cinn eile, comparáid a dhéanamh idir dhá íomhá, priontáil faisnéis mhionsonraithe, cuardach íomhánna le haghaidh meiteashonraí meaitseála, breathnóir íomhá simplí, agus go leor eile.
Tús a chur le OpenImageIO
Tá córas tógála OpenImageIO bunaithe ar CMake. Más gá é a shuiteáil ar do chóras. Tar éis duit OpenImageIO a thógáil, má thiomsaigh tú leis an mbratach EMBEDPLUGINS=0 beidh ort an athróg timpeallachta OIIO_LIBRARY_PATH a shocrú chun an t-eolaire 'lib' ina bhfuil OpenImageIO suiteáilte a chur in iúl, nó ní bheidh sé in ann na forlíontáin a aimsiú.
Suiteáil OpenImageIO trí ordú git
git clone https://github.com/OpenImageIO/oiio.git
Léamh agus Scríobh íomhánna trí C++ API
Ligeann leabharlann OpenImageIO do ríomhchláraitheoirí íomhánna a léamh & a scríobh chomh maith le rialú a dhéanamh ar an mbealach ina dtáirgfear íomhánna níos déanaí go seachtrach san aschur. De ghnáth, léitear na híomhánna go léir a léann an leabharlann isteach i ImageBuf le tacaíocht ó ImageCache faoi bhun, agus tiontaítear iad go huathoibríoch go picteilíní snámhphointe le haghaidh stórála istigh. Agus íomhánna á scríobh, ní dhéanann sé ach an íomhá reatha a aschur chuig an gcomhad ainmnithe. Ní bhaineann an leabharlann próiseála íomhá an íomhá reatha as an gcruach íomhánna; sábhálann sé ach cóip de.
Ardléamh Íomhá trí C++ API<
#include
using namespace OIIO;
...
const char *filename = "foo.jpg";
auto inp = ImageInput::open (filename);
if (! inp) {
std::cerr << "Could not open " << filename
<< ", error = " << OIIO::geterror() << "\n";
return;
}
const ImageSpec &spec = inp->spec();
int xres = spec.width;
int yres = spec.height;
int channels = spec.nchannels;
std::vector pixels(xres * yres * channels);
if (! inp->read_image (TypeDesc::UINT8, &pixels[0])) {
std::cerr << "Could not read pixels from " << filename
<< ", error = " << inp->geterror() << "\n";
return;
}
if (! inp->close ()) {
std::cerr << "Error closing " << filename
<< ", error = " << inp->geterror() << "\n";
return;
}
Íomhá a Thiontú go Formáidí eile
Soláthraíonn leabharlann OpenImageIO gnéithe chun íomhánna a thiontú go formáidí comhaid eile a bhfuil tóir orthu. Tá sé an-éasca a thiontú i measc formáidí íomhá tacaíocht. Léifidh fóntais iconvert íomhá agus ansin scríobhfaidh an íomhá chuig formáid comhaid tacaithe nua. Beidh sé tátal a bhaint as ach an fhormáid comhaid as an síneadh comhad. Is féidir leat fotheideal íomhá, cur síos, eochairfhocail nó meiteashonraí a chur san áireamh.
Athraigh Meiteashonraí Íomhá trí C++
Cuireann OpenImageIO API ar chumas forbróirí bogearraí meiteashonraí íomhá reatha a athrú laistigh dá bhfeidhmchláir C++ féin trí API foinse oscailte. Soláthraíonn sé orduithe a athraíonn meiteashonraí na híomhá atá ann cheana féin, ach nach n-athraíonn a luachanna picteilín. Is é an rud go maith nach bhfuil ach an íomhá reatha (íomhá ag barr an chairn) difear, ach ní síos an chairn. Is féidir leat eochairfhocail a chur leis nó a ghlanadh freisin, fotheideal nó cur síos a chur leis, aon mheiteashonraí a bhaint, agus tuilleadh.
Conas Meiteashonraí Íomhá a Shocrú trí C++
// spec["key"] = value sets the value of the metadata, using
// the type of value as a guide for the type of the metadata.
spec["Orientation"] = 1; // int
spec["PixelAspectRatio"] = 1.0f; // float
spec["ImageDescription"] = "selfie"; // string
spec["worldtocamera"] = Imath::M44f(...) // matrix
Tarraing Cruthanna nó Téacs thar Íomhánna trí C++ API
Bíonn sé an-úsáideach i gcónaí do chuid íomhánna a lipéadú le teidil úsáideacha nó comhartha uisce a chur ar an íomhá chun iad a chosaint ó úsáid neamhúdaraithe. Tá roinnt gnéithe tábhachtacha san áireamh sa leabharlann foinse oscailte OpenImageIO chun cruthanna, pointí, línte, boscaí nó téacs a tharraingt thar na híomhánna gan stró. Is féidir leat cruthanna a tharraingt thar d’íomhá nó téacs a chur leis gan ach cúpla líne de chód. Léiríonn na samplaí cód seo a leanas conas téacs a tharraingt thar íomhá agus é a ailíniú.
Conas Téacs a Thar-Íomhá a Tarraingt trí C++ API
ImageBufAlgo::render_text (ImgA, 50, 100, "Hello, world");
float red[] = { 1, 0, 0, 1 };
ImageBufAlgo::render_text (ImgA, 100, 200, "Go Big Red!",
60, "Arial Bold", red);
float white[] = { 1, 1, 1, 1 };
ImageBufAlgo::render_text (ImgB, 320, 240, "Centered",
60, "Arial Bold", white,
TextAlignX::Center, TextAlignY::Center);