148 unsigned long long imgMem = 0;
150 std::map<std::string, EntryPtr>::iterator
imgIt;
153 std::cout <<
"Image: " <<
imgIt->first << std::endl;
154 std::cout <<
"CacheEntry: " <<
imgIt->second.use_count() <<
"last access: " <<
imgIt->second->lastAccess;
156 if (
imgIt->second->image8) {
157 imgMem +=
imgIt->second->image8->width() *
imgIt->second->image8->height() * 3;
159 std::cout <<
" 8bit: " <<
imgIt->second->image8.use_count();
162 if (
imgIt->second->image16) {
163 imgMem +=
imgIt->second->image16->width() *
imgIt->second->image16->height() * 3*2;
165 std::cout <<
" 16bit: " <<
imgIt->second->image8.use_count();
168 if (
imgIt->second->imageFloat) {
169 imgMem +=
imgIt->second->imageFloat->width() *
imgIt->second->imageFloat->height() * 3 * 4;
171 std::cout <<
" float: " <<
imgIt->second->imageFloat.use_count() ;
174 if (
imgIt->second->mask) {
177 std::cout <<
" mask: " <<
imgIt->second->mask.use_count() << std::endl;
182 unsigned long long pyrMem = 0;
183 std::map<std::string, vigra::BImage*>::iterator
pyrIt;
202 for (std::map<std::string, EntryPtr>::iterator
it =
images.begin();
206 if (
it->first.substr(
it->first.size()-6) !=
":small") {
208 if (
it->second.unique()) {
226 std::map<std::string, EntryPtr>::iterator
it =
images.find(
accIt->second);
230 if (
it->second->image8) {
231 purgedMem +=
it->second->image8->width() *
it->second->image8->height() * 3;
233 if (
it->second->image16) {
234 purgedMem +=
it->second->image16->width() *
it->second->image16->height() * 3 * 2;
236 if (
it->second->imageFloat) {
237 purgedMem +=
it->second->imageFloat->width() *
it->second->imageFloat->height()*3*4;
239 if (
it->second->mask) {
240 purgedMem +=
it->second->mask->width() *
it->second->mask->height();
350 vigra::ImageImportInfo info(filename.c_str());
352 if (!info.getICCProfile().empty())
354 *iccProfile = info.getICCProfile();
356 int bands = info.numBands();
358 const char *
pixelType = info.getPixelType();
364 img8->resize(info.size());
366 img16->resize(info.size());
374 vigra::importImage(info, destImage(*
img8,
375 vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(0)));
376 copyImage(srcImageRange(*
img8, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(0)),
377 destImage(*
img8, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(1)));
378 copyImage(srcImageRange(*
img8, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(0)),
379 destImage(*
img8, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(2)));
381 vigra::importImage(info, destImage(*
img16,
382 vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(0)));
383 copyImage(srcImageRange(*
img16, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(0)),
384 destImage(*
img16, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(1)));
385 copyImage(srcImageRange(*
img16, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(0)),
386 destImage(*
img16, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(2)));
390 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
pixelType);
393 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
pixelType);
396 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
pixelType);
399 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
pixelType);
402 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
pixelType);
407 copyImage(srcImageRange(*
imgFloat, vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
408 destImage(*
imgFloat, vigra::VectorComponentAccessor<vigra::RGBValue<float> >(1)));
409 copyImage(srcImageRange(*
imgFloat, vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
410 destImage(*
imgFloat, vigra::VectorComponentAccessor<vigra::RGBValue<float> >(2)));
413 mask->resize(info.size());
417 vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(0)),
419 copyImage(srcImageRange(*
img8, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(0)),
420 destImage(*
img8, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(1)));
421 copyImage(srcImageRange(*
img8, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(0)),
422 destImage(*
img8, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt8> >(2)));
425 vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(0)),
427 copyImage(srcImageRange(*
img16, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(0)),
428 destImage(*
img16, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(1)));
429 copyImage(srcImageRange(*
img16, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(0)),
430 destImage(*
img16, vigra::VectorComponentAccessor<vigra::RGBValue<vigra::UInt16> >(2)));
434 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)), destImage(*mask),
pixelType);
437 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)), destImage(*mask),
pixelType);
440 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)), destImage(*mask),
pixelType);
443 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)), destImage(*mask),
pixelType);
446 vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)), destImage(*mask),
pixelType);
451 copyImage(srcImageRange(*
imgFloat, vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
452 destImage(*
imgFloat, vigra::VectorComponentAccessor<vigra::RGBValue<float> >(1)));
453 copyImage(srcImageRange(*
imgFloat, vigra::VectorComponentAccessor<vigra::RGBValue<float> >(0)),
454 destImage(*
imgFloat, vigra::VectorComponentAccessor<vigra::RGBValue<float> >(2)));
460 vigra::importImage(info, destImage(*
img8));
462 vigra::importImage(info, destImage(*
img16));
470 vigra::importImage(info, destImage(*
imgFloat));
473 vigra::importImage(info, destImage(*
imgFloat));
480 mask->resize(info.size());
501 DEBUG_ERROR(
"unsupported depth, only images with 1 or 3 channel images are supported.");
504 }
catch (std::exception & e) {
506 DEBUG_ERROR(
"Error during image reading: " << e.what());
561 if (entry->image8->width() > 0) {
562 w = entry->image8->width();
563 h = entry->image8->height();
564 }
else if (entry->image16->width() > 0) {
565 w = entry->image16->width();
566 h = entry->image16->height();
567 }
else if (entry->imageFloat->width() > 0) {
568 w = entry->imageFloat->width();
569 h = entry->imageFloat->height();
583 e->origType = entry->origType;
585 if (!entry->iccProfile->empty())
587 *(e->iccProfile) = *(entry->iccProfile);
591 if (entry->imageFloat->width() != 0 ) {
593 if (entry->mask->width() != 0) {
599 if (entry->image16->width() != 0 ) {
601 if (entry->mask->width() != 0) {
607 if (entry->image8->width() != 0) {
609 if (entry->mask->width() != 0) {
information about an image inside the cache