24 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A,
128 if (decoder ==
null) {
135 List<Float> sampleSizes = Arrays.asList(1.0f, 2.0f, 4.0f, 8.0f);
137 for (
float sampleSize : sampleSizes) {
140 ImageWrapper decodedImage = decoder.decodeRegion(testRect, sampleSize);
141 System.out.println(
"Decoded region with sample size " + sampleSize +
": " +
142 (
int)(testRect.getWidth() / sampleSize) +
"x" + (
int)(testRect.getHeight() / sampleSize));
195 System.out.println(
"=== Advanced BitmapRegionDecoder Features ===");
197 if (imageData ==
null) {
202 List<byte[]> imageDataList = Arrays.asList(
204 new byte[] { (byte) 0xFF, (
byte) 0xD8, (byte) 0xFF, (
byte) 0xE0 },
205 new byte[] { 0x47, 0x49, 0x46, 0x38 }
208 for (
int i = 0; i < imageDataList.size(); i++) {
213 System.out.println(
"Created decoder for image type " + (i + 1));
218 ImageWrapper decodedImage = decoder.decodeRegion(testRect, 1);
219 System.out.println(
"Successfully decoded region from image type " + (i + 1));
221 }
catch (Exception e) {
222 System.err.println(
"Failed to decode image type " + (i + 1) +
": " + e.getMessage());
269 System.out.println(
"=== Performance Optimization ===");
271 if (decoder ==
null) {
277 List<Float> sampleSizes = Arrays.asList(1.0f, 2.0f, 4.0f, 8.0f, 16.0f);
279 for (
float sampleSize : sampleSizes) {
280 long startTime = System.currentTimeMillis();
282 ImageWrapper image = decoder.decodeRegion(largeRect, sampleSize);
284 long endTime = System.currentTimeMillis();
285 System.out.println(
"Sample size " + sampleSize +
": " + (endTime - startTime) +
"ms, " +
286 "Output size: " + image.getWidth() +
"x" + image.getHeight());
294 System.out.println(
"=== Rectangle Manipulation ===");
298 System.out.println(
"Base rectangle: " + baseRect.getX() +
", " + baseRect.getY() +
299 ", " + baseRect.getWidth() +
"x" + baseRect.getHeight());
302 List<Rectangle> variations = Arrays.asList(
303 new Rectangle(baseRect.getX(), baseRect.getY(), baseRect.getWidth() / 2, baseRect.getHeight()),
304 new Rectangle(baseRect.getX(), baseRect.getY(), baseRect.getWidth(), baseRect.getHeight() / 2),
305 new Rectangle(baseRect.getX() + 50, baseRect.getY() + 25, baseRect.getWidth() - 100, baseRect.getHeight() - 50),
306 new Rectangle(0, 0, baseRect.getWidth(), baseRect.getHeight())
309 for (
int i = 0; i < variations.size(); i++) {
311 System.out.println(
"Variation " + (i + 1) +
": " + rect.getX() +
", " + rect.getY() +
312 ", " + rect.getWidth() +
"x" + rect.getHeight());