0
我試圖從SWF中提取圖像。下面的代碼工作,但是當提取PNG圖像時,背景變得不透明。任何幫助都會很棒。這是我有:使用PHP從SWF中提取圖像時保持PNG透明度
class SWFextractImages {
private $swf;
private $jpegTables;
private $shipID;
public function doExtractImages($shipID, $b) {
$this->shipID = $shipID;
$this->swf = new SWF($b);
$this->jpegTables = '';
foreach ($this->swf->tags as $tag) {
if($tag['type']==6){
if($this->defineBits($tag)){
continue;
}
}
}
}
private function defineBits($tag) {
$ret = $this->swf->parseTag($tag);
$imageData = $ret['imageData'];
if (strlen($this->jpegTables) > 0) {
$imageData = substr($this->jpegTables, 0, -2) . substr($imageData, 2);
}
if($ret['characterId']==5){
$filename = sprintf('images/'.$this->shipID.'.jpg', $ret['characterId']);
file_put_contents($filename, $imageData);
return true;
}
}
}
不知道這是否會有所幫助,但這也從SWF文件中提取其他數據。 Here's the source code。
一些問題上來;看起來我們試圖獲得的圖像類型是35,這是帶有guessextension函數的JPEG3。我們得到了使用它的圖像,但圖像仍然不透明。你有什麼想法? – user3245228 2014-09-04 09:02:52
首先,.jpg不能是透明的。你聲稱不透明的圖像的擴展是什麼? – 2014-09-04 09:06:03
圖片是PNG。它必須是,因爲它們是SWF使用的渲染。但是當我們測試標籤類型時,它返回35,這是DefineBitsJPEG3。 – user3245228 2014-09-04 09:07:37