This should fix png files with transparency in the Xls reader (#2155)
* This should fix png files with transparency in the Xls reader
This commit is contained in:
parent
05466e99ce
commit
9c2ce22505
|
|
@ -2775,11 +2775,6 @@ parameters:
|
|||
count: 1
|
||||
path: src/PhpSpreadsheet/Reader/Xls.php
|
||||
|
||||
-
|
||||
message: "#^Parameter \\#1 \\$value of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\MemoryDrawing\\:\\:setImageResource\\(\\) expects GdImage\\|resource, resource\\|false given\\.$#"
|
||||
count: 1
|
||||
path: src/PhpSpreadsheet/Reader/Xls.php
|
||||
|
||||
-
|
||||
message: "#^Parameter \\#1 \\$pValue of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\BaseDrawing\\:\\:setOffsetX\\(\\) expects int, float\\|int given\\.$#"
|
||||
count: 1
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ use PhpOffice\PhpSpreadsheet\Shared\File;
|
|||
use PhpOffice\PhpSpreadsheet\Shared\OLE;
|
||||
use PhpOffice\PhpSpreadsheet\Shared\OLERead;
|
||||
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
|
||||
use PhpOffice\PhpSpreadsheet\Shared\Xls as SharedXls;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||
use PhpOffice\PhpSpreadsheet\Style\Borders;
|
||||
|
|
@ -1102,12 +1103,12 @@ class Xls extends BaseReader
|
|||
$endOffsetX = $spContainer->getEndOffsetX();
|
||||
$endOffsetY = $spContainer->getEndOffsetY();
|
||||
|
||||
$width = \PhpOffice\PhpSpreadsheet\Shared\Xls::getDistanceX($this->phpSheet, $startColumn, $startOffsetX, $endColumn, $endOffsetX);
|
||||
$height = \PhpOffice\PhpSpreadsheet\Shared\Xls::getDistanceY($this->phpSheet, $startRow, $startOffsetY, $endRow, $endOffsetY);
|
||||
$width = SharedXls::getDistanceX($this->phpSheet, $startColumn, $startOffsetX, $endColumn, $endOffsetX);
|
||||
$height = SharedXls::getDistanceY($this->phpSheet, $startRow, $startOffsetY, $endRow, $endOffsetY);
|
||||
|
||||
// calculate offsetX and offsetY of the shape
|
||||
$offsetX = $startOffsetX * \PhpOffice\PhpSpreadsheet\Shared\Xls::sizeCol($this->phpSheet, $startColumn) / 1024;
|
||||
$offsetY = $startOffsetY * \PhpOffice\PhpSpreadsheet\Shared\Xls::sizeRow($this->phpSheet, $startRow) / 256;
|
||||
$offsetX = $startOffsetX * SharedXls::sizeCol($this->phpSheet, $startColumn) / 1024;
|
||||
$offsetY = $startOffsetY * SharedXls::sizeRow($this->phpSheet, $startRow) / 256;
|
||||
|
||||
switch ($obj['otObjType']) {
|
||||
case 0x19:
|
||||
|
|
@ -1143,6 +1144,7 @@ class Xls extends BaseReader
|
|||
// need check because some blip types are not supported by Escher reader such as EMF
|
||||
if ($blip = $BSE->getBlip()) {
|
||||
$ih = imagecreatefromstring($blip->getData());
|
||||
if ($ih !== false) {
|
||||
$drawing = new MemoryDrawing();
|
||||
$drawing->setImageResource($ih);
|
||||
|
||||
|
|
@ -1160,6 +1162,8 @@ class Xls extends BaseReader
|
|||
|
||||
break;
|
||||
case BSE::BLIPTYPE_PNG:
|
||||
imagealphablending($ih, false);
|
||||
imagesavealpha($ih, true);
|
||||
$drawing->setRenderingFunction(MemoryDrawing::RENDERING_PNG);
|
||||
$drawing->setMimeType(MemoryDrawing::MIMETYPE_PNG);
|
||||
|
||||
|
|
@ -1170,6 +1174,7 @@ class Xls extends BaseReader
|
|||
$drawing->setCoordinates($spContainer->getStartCoordinates());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
Loading…
Reference in New Issue