LZW解凍

```
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class LZWDecoder {

    public static byte[] decompress(byte[] compressedData) {
        ByteArrayOutputStream result = new ByteArrayOutputStream();
        int dictSize = 256;
        int dictSizeBits = 8;
        int[] dictionary = new int[4096];

        // Initialize dictionary with all possible bytes
        for (int i = 0; i < 256; i++) {
            dictionary[i] = i;
        }

        int currentCode = 0;
        int currentBits = 0;

        for (byte compressedByte : compressedData) {
            currentCode = (currentCode << 8) | (compressedByte & 0xFF);
            currentBits += 8;

            while (currentBits >= dictSizeBits) {
                int outputCode = currentCode >> (currentBits - dictSizeBits);
                currentCode &= (1 << (currentBits - dictSizeBits)) - 1;
                currentBits -= dictSizeBits;

                if (outputCode == 256) {
                    break; // End of data
                } else if (outputCode < dictSize) {
                    // Output code to result
                    try {
                        result.write(dictionary[outputCode]);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    // Add new entry to the dictionary
                    if (dictSize < 4096) {
                        dictionary[dictSize++] = currentCode << 8 | dictionary[outputCode];
                    }
                } else {
                    // Handle special case for clear code
                    if (outputCode == 257) {
                        // Reset dictionary
                        dictSize = 258;
                        dictSizeBits = 9;
                        for (int i = 0; i < 256; i++) {
                            dictionary[i] = i;
                        }
                    }
                }
            }
        }

        return result.toByteArray();
    }

    public static void main(String[] args) {
        // Example usage
        byte[] compressedData = /* Your compressed data here */;
        byte[] decompressedData = decompress(compressedData);

        // Now, decompressedData contains the decompressed image data
    }
}
```

```
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class Main {

    public static void main(String[] args) {
        // ファイルからデータを読み込む
        File inputFile = new File("/foo/てぃふ.tiff");
        try {
            byte[] compressedData = Files.readAllBytes(inputFile.toPath());

            // 解凍
            byte[] decompressedData = LZWDecoder.decompress(compressedData);

            // これ以降、decompressedDataを適切な処理に使用できます
            // 例: 他のライブラリを使用して画像に変換するなど
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
```

```
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

public class ImageReaderExample {
    public static void main(String[] args) {
        File file = new File("your_image_path");

        try {
            // Get ImageReader for the file
            Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("your_image_format");
            ImageReader reader = readers.next();
            reader.setInput(ImageIO.createImageInputStream(file));

            // Configure ImageReadParam to handle specific properties
            ImageReadParam param = reader.getDefaultReadParam();
            // Set additional parameters if needed

            // Read the image using the specified parameters
            BufferedImage image = reader.read(0, param);

            // Now 'image' contains the loaded image
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
```

```
package cola.foo;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

public class ImageReaderExample {
	public static BufferedImage decodeLZWImage(File compressedFile) throws IOException {
        // ImageIOのサービスプロバイダを追加
        ImageIO.scanForPlugins();
        
        // ImageIOからTIFFImageReaderを取得
        Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("TIFF");
        ImageReader reader = null;
        while (readers.hasNext()) {
            reader = readers.next();
//            if (reader instanceof TIFFImageReaderSpi) {
//                break;
//            }
        }

        if (reader == null) {
            throw new IllegalArgumentException("TIFF ImageReader not found");
        }

        // LZW圧縮画像ファイルを解凍し、BufferedImageに格納
        ImageInputStream inputStream = ImageIO.createImageInputStream(compressedFile);
        reader.setInput(inputStream);
        BufferedImage image = reader.read(0);

        // ストリームをクローズ
        inputStream.close();
        
        return image;
    }

//    public static void main(String[] args) {
//        File compressedFile = new File("C:\\Users\\hayaj\\OneDrive\\デスクトップ\\仕事\\tif.tif");
//        try {
//            BufferedImage image = decodeLZWImage(compressedFile);
//            // 画像の利用例
//            // ここに、imageを使った処理を記述
//            System.out.println(image.getTransparency());
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
	
//	public static void main(String[] args) {
//        String[] formatNames = ImageIO.getReaderFormatNames();
//        System.out.println("Supported Image Formats:");
//        for (String format : formatNames) {
//            String[] extensions = ImageIO.getReaderFileSuffixes();
//            StringBuilder extensionList = new StringBuilder();
//            for (String ext : extensions) {
//                if (ext != null && format.equalsIgnoreCase(ext)) {
//                    if (extensionList.length() > 0) {
//                        extensionList.append(", ");
//                    }
//                    extensionList.append(ext);
//                }
//            }
//            System.out.println(format + ": " + extensionList.toString());
//        }
//    }
}
```

```
public enum EnumSample {
    INSTANCE1,
    INSTANCE2,
    INSTANCE3;

    public EnumSample[] method(EnumSample first) {
        EnumSample[] array = new EnumSample[EnumSample.values().length];
        array[0] = first;
        int index = 1;
        for (EnumSample instance : EnumSample.values()) {
            if (instance != first) {
                array[index++] = instance;
            }
        }
        return array;
    }
}
```

```
# WordファイルとプロセスIDの対応表を一覧表示する

# Wordプロセスを取得
$wordProcesses = Get-Process | Where-Object { $_.ProcessName -eq "WINWORD" }

if ($wordProcesses) {
    Write-Host "WordファイルとプロセスIDの対応表:"
    foreach ($process in $wordProcesses) {
        $files = $process.MainWindowTitle
        $processId = $process.Id
        Write-Host "ファイル: $files, プロセスID: $processId"
    }
} else {
    Write-Host "実行中のWordプロセスはありません。"
}
```