public function build() { $jpegdata = file_get_contents($this->image_file); $swf_jpeg = new IO_SWF_JPEG(); $swf_jpeg->input($jpegdata); $jpeg_table = $swf_jpeg->getEncodingTables(); $jpeg_image = $swf_jpeg->getImageData(); // アルファには対応しません $this->code = 21; $this->content = $jpeg_table . $jpeg_image; }
<?php require_once 'IO/SWF/JPEG.php'; $options = getopt("f:a:"); if (isset($options['f']) === false || is_readable($options['f']) === false) { echo "Usage: php bitmapalpha2png.php -f <jpeg_file> -a <alpha_file>\n"; echo "ex) php bitmapalpha2png.php -f test.jpg -a test.alpha > test.png\n"; exit(1); } $jpegfile = $options["f"]; $alphafile = $options["a"]; $jpegdata = file_get_contents($jpegfile); $alphadata = file_get_contents($alphafile); $pngdata = IO_SWF_JPEG::bitmapAlpha2PNG($jpegdata, $alphadata); echo $pngdata;
function getJpegData($jpegTables) { $tag_code = $this->code; if ($tag_code != 6 && $tag_code != 21 && $tag_code != 35) { // DefineBitsJPEG3 return false; } if (!$this->parseTagContent()) { return false; } $jpegData = $this->tag->_JPEGData; if ($tag_code == 6 && $jpegTables !== false) { // DefineBits $jpegData .= $jpegTables; } $jpeg = new IO_SWF_JPEG(); $jpeg->input($jpegData); $ret = $jpeg->getStdJpegData(); return $ret; }
<?php require_once 'IO/SWF/JPEG.php'; function usage() { echo "Usage: php jpeg_dump.php <dump|jpegtables|imagedata>" . PHP_EOL; } if ($argc != 3) { usage(); exit(1); } $jpegdata = file_get_contents($argv[2]); $jpeg = new IO_SWF_JPEG(); $jpeg->input($jpegdata); switch ($argv[1]) { case 'dump': $jpeg->dumpChunk(); break; case 'jpegtables': echo $jpeg->getEncodingTables(); break; case 'imagedata': echo $jpeg->getImageData(); break; default: usage(); exit(1); } exit(0);
// DefineBits case 21: // DefineBitsJPEG2 // DefineBitsJPEG2 case 35: // DefineBitsJEPG3 $tag->parseTagContent(); $cid = $tag->tag->_CharacterID; $data = $tag->getJpegData($jpegTables); $ext = "jpg"; if ($code >= 35) { // DefineBitsJPEG3 $zlibalpha = $tag->tag->_ZlibBitmapAlphaData; $data2 = gzuncompress($zlibalpha); $ext2 = "alpha"; $data3 = IO_SWF_JPEG::bitmapAlpha2PNG($data, $data2); $ext3 = "png"; } break; case 20: // DefineLossless // DefineLossless case 36: // DefineLossless2 $tag->parseTagContent(); $cid = $tag->tag->_CharacterID; $data = $tag->getPNGData(); $ext = "png"; break; case 14: // DefineSound