Warning: session_start(): open(/var/lib/php/sessions/sess_evcqcjb29fn1uqdd7bues74taj, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass G22DataWrangler > Stages {
settable BufferedImage inputImage;
settable bool withDiagonals = true;
settable int blurPixels = 1;
// kilobytes per compressed image (pessimistic estimate
// counting 2 bytes for each int)
new TargetAndActual kilobytes;
new TargetAndActual coveredPixelsPercentage;
new TargetAndActual detailLevel;
settable IPosterizer posterizer = new SinglePixelPosterizer(4);
BufferedImage blurredImage;
int maxLines;
VectorOptimizedSSIList vectorizedSSIs, cutVectorizedSSIs;
// We store the posterized image as Hi15
Hi15Image posterizedImage;
FastRegions_Hi15Image regionMaker;
L> regions;
L initialSSIs, sortedSSIs, cutSSIs;
double detailDivisor() {
ret areaRoot(inputImage);
}
// choose number of colors for posterized image
selfType colors(int colors) {
int perChannel = iceil(cbrt(colors));
posterizer = new SinglePixelPosterizer(perChannel);
this;
}
stage "Blur" {
blurredImage = blurBufferedImage(blurPixels, inputImage);
}
stage "Posterize" {
posterizedImage = new Hi15Image(posterizeBufferedImage(blurredImage, posterizer));
}
stage "Regions" {
regionMaker = new FastRegions_Hi15Image(posterizedImage);
regionMaker.withDiagonals(withDiagonals);
regions = regionMaker!;
}
stage "SSIs" {
initialSSIs = new L;
for (region : regions)
initialSSIs.addAll(new G22_RegionToSSIs_v2(region).withDiagonals (withDiagonals)!);
}
stage "Sort SSIs" {
sortedSSIs = biggestSSIsFirst(initialSSIs);
}
int initialSSILines() {
ret totalSSILines(sortedSSIs);
}
stage "Cut SSI List" {
maxLines = !detailLevel.hasTarget() ? Int.MAX_VALUE
: iround(detailDivisor()*detailLevel.target());
cutSSIs = takeFirstNSSILines(maxLines, sortedSSIs);
detailLevel.set(l(cutSSIs)/detailDivisor());
}
stage "Vector-Optimize" {
vectorizedSSIs = new VectorOptimizedSSIList(initialSSIs);
}
stage "Cut Vector-Optimized SSIs by file size" {
int maxInts = !kilobytes.hasTarget() ? Int.MAX_VALUE
: iround(kilobytes.target()*512); // assuming 16 bit ints
var cutter = new CutListToBudget<>(ssi -> (double) ssi.sizeInInts(), maxInts, vectorizedSSIs);
cutVectorizedSSIs = VectorOptimizedSSIList.alreadyOptimized(cutter!);
kilobytes.set(totalSizeInInts(cutVectorizedSSIs)/512.0);
}
/*
// take biggest ones, cut off at selected detail level
optimizedSSIs <- VectorOptimizedSSIList alreadyOptimized < biggestSSIsFirst optimizedSSIs
//print "optimizedSSIs" < l optimizedSSIs
optimizedSSIs <- VectorOptimizedSSIList alreadyOptimized < takeFirstNSSILines maxLines optimizedSSIs
//print "optimizedSSIs" < l optimizedSSIs
// get stats
keptLines <- totalSSILines optimizedSSIs
vectorSSIs <- optimizedSSIs vectorSSIs
ssis <- optimizedSSIs directSSIs
totalSSIs <- l ssis
directSSILines <- totalSSILines ssis
vectorSSIPoints <- totalVectorSSIPoints vectorSSIs
stats <- commaCombine list {
resolution
n2 totalLines "SSI line"
n2_noPlural keptLines "kept"
n2 optimizedSSIs "SSI"
//n2 totalSSIs "Direct SSI"
//n2 vectorSSIs "Vector SSI"
n2 directSSILines "Direct SSI line"
n2 vectorSSIPoints "Vector SSI point"
}
imageOut <- transparentImage resolution
optimizedSSIs render imageOut
infiller <- new ImageInfiller imageOut
//infiller maxDepth 2
infiller unlimited
infiller infillOpacity 254
//infiller eraseOriginalPixels
imageOut <- infiller get
imageOut <- renderImageOnBackground imageOut < Color black
*/
}