27 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A,
148 if (decoder ==
null) {
155 List<Float> sampleSizes = Arrays.asList(1.0f, 2.0f, 4.0f, 8.0f);
157 for (
float sampleSize : sampleSizes) {
160 ImageWrapper decodedImage = decoder.decodeRegion(testRect, sampleSize);
161 System.out.println(
"Decoded region with sample size " + sampleSize +
": " +
162 (
int)(testRect.getWidth() / sampleSize) +
"x" + (
int)(testRect.getHeight() / sampleSize));
215 System.out.println(
"=== Advanced BitmapRegionDecoder Features ===");
217 if (imageData ==
null) {
222 List<byte[]> imageDataList = Arrays.asList(
224 new byte[] { (byte) 0xFF, (
byte) 0xD8, (byte) 0xFF, (
byte) 0xE0 },
225 new byte[] { 0x47, 0x49, 0x46, 0x38 }
228 for (
int i = 0; i < imageDataList.size(); i++) {
233 System.out.println(
"Created decoder for image type " + (i + 1));
238 ImageWrapper decodedImage = decoder.decodeRegion(testRect, 1);
239 System.out.println(
"Successfully decoded region from image type " + (i + 1));
241 }
catch (Exception e) {
242 System.err.println(
"Failed to decode image type " + (i + 1) +
": " + e.getMessage());
289 System.out.println(
"=== Performance Optimization ===");
291 if (decoder ==
null) {
297 List<Float> sampleSizes = Arrays.asList(1.0f, 2.0f, 4.0f, 8.0f, 16.0f);
299 for (
float sampleSize : sampleSizes) {
300 long startTime = System.currentTimeMillis();
302 ImageWrapper image = decoder.decodeRegion(largeRect, sampleSize);
304 long endTime = System.currentTimeMillis();
305 System.out.println(
"Sample size " + sampleSize +
": " + (endTime - startTime) +
"ms, " +
306 "Output size: " + image.getWidth() +
"x" + image.getHeight());
314 System.out.println(
"=== Rectangle Manipulation ===");
318 System.out.println(
"Base rectangle: " + baseRect.getX() +
", " + baseRect.getY() +
319 ", " + baseRect.getWidth() +
"x" + baseRect.getHeight());
322 List<Rectangle> variations = Arrays.asList(
323 new Rectangle(baseRect.getX(), baseRect.getY(), baseRect.getWidth() / 2, baseRect.getHeight()),
324 new Rectangle(baseRect.getX(), baseRect.getY(), baseRect.getWidth(), baseRect.getHeight() / 2),
325 new Rectangle(baseRect.getX() + 50, baseRect.getY() + 25, baseRect.getWidth() - 100, baseRect.getHeight() - 50),
326 new Rectangle(0, 0, baseRect.getWidth(), baseRect.getHeight())
329 for (
int i = 0; i < variations.size(); i++) {
331 System.out.println(
"Variation " + (i + 1) +
": " + rect.getX() +
", " + rect.getY() +
332 ", " + rect.getWidth() +
"x" + rect.getHeight());