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
|
count: 1
|
||||||
path: src/PhpSpreadsheet/Reader/Xls.php
|
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\\.$#"
|
message: "#^Parameter \\#1 \\$pValue of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\BaseDrawing\\:\\:setOffsetX\\(\\) expects int, float\\|int given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ use PhpOffice\PhpSpreadsheet\Shared\File;
|
||||||
use PhpOffice\PhpSpreadsheet\Shared\OLE;
|
use PhpOffice\PhpSpreadsheet\Shared\OLE;
|
||||||
use PhpOffice\PhpSpreadsheet\Shared\OLERead;
|
use PhpOffice\PhpSpreadsheet\Shared\OLERead;
|
||||||
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
|
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Shared\Xls as SharedXls;
|
||||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
||||||
use PhpOffice\PhpSpreadsheet\Style\Borders;
|
use PhpOffice\PhpSpreadsheet\Style\Borders;
|
||||||
|
|
@ -1102,12 +1103,12 @@ class Xls extends BaseReader
|
||||||
$endOffsetX = $spContainer->getEndOffsetX();
|
$endOffsetX = $spContainer->getEndOffsetX();
|
||||||
$endOffsetY = $spContainer->getEndOffsetY();
|
$endOffsetY = $spContainer->getEndOffsetY();
|
||||||
|
|
||||||
$width = \PhpOffice\PhpSpreadsheet\Shared\Xls::getDistanceX($this->phpSheet, $startColumn, $startOffsetX, $endColumn, $endOffsetX);
|
$width = SharedXls::getDistanceX($this->phpSheet, $startColumn, $startOffsetX, $endColumn, $endOffsetX);
|
||||||
$height = \PhpOffice\PhpSpreadsheet\Shared\Xls::getDistanceY($this->phpSheet, $startRow, $startOffsetY, $endRow, $endOffsetY);
|
$height = SharedXls::getDistanceY($this->phpSheet, $startRow, $startOffsetY, $endRow, $endOffsetY);
|
||||||
|
|
||||||
// calculate offsetX and offsetY of the shape
|
// calculate offsetX and offsetY of the shape
|
||||||
$offsetX = $startOffsetX * \PhpOffice\PhpSpreadsheet\Shared\Xls::sizeCol($this->phpSheet, $startColumn) / 1024;
|
$offsetX = $startOffsetX * SharedXls::sizeCol($this->phpSheet, $startColumn) / 1024;
|
||||||
$offsetY = $startOffsetY * \PhpOffice\PhpSpreadsheet\Shared\Xls::sizeRow($this->phpSheet, $startRow) / 256;
|
$offsetY = $startOffsetY * SharedXls::sizeRow($this->phpSheet, $startRow) / 256;
|
||||||
|
|
||||||
switch ($obj['otObjType']) {
|
switch ($obj['otObjType']) {
|
||||||
case 0x19:
|
case 0x19:
|
||||||
|
|
@ -1143,31 +1144,35 @@ class Xls extends BaseReader
|
||||||
// need check because some blip types are not supported by Escher reader such as EMF
|
// need check because some blip types are not supported by Escher reader such as EMF
|
||||||
if ($blip = $BSE->getBlip()) {
|
if ($blip = $BSE->getBlip()) {
|
||||||
$ih = imagecreatefromstring($blip->getData());
|
$ih = imagecreatefromstring($blip->getData());
|
||||||
$drawing = new MemoryDrawing();
|
if ($ih !== false) {
|
||||||
$drawing->setImageResource($ih);
|
$drawing = new MemoryDrawing();
|
||||||
|
$drawing->setImageResource($ih);
|
||||||
|
|
||||||
// width, height, offsetX, offsetY
|
// width, height, offsetX, offsetY
|
||||||
$drawing->setResizeProportional(false);
|
$drawing->setResizeProportional(false);
|
||||||
$drawing->setWidth($width);
|
$drawing->setWidth($width);
|
||||||
$drawing->setHeight($height);
|
$drawing->setHeight($height);
|
||||||
$drawing->setOffsetX($offsetX);
|
$drawing->setOffsetX($offsetX);
|
||||||
$drawing->setOffsetY($offsetY);
|
$drawing->setOffsetY($offsetY);
|
||||||
|
|
||||||
switch ($blipType) {
|
switch ($blipType) {
|
||||||
case BSE::BLIPTYPE_JPEG:
|
case BSE::BLIPTYPE_JPEG:
|
||||||
$drawing->setRenderingFunction(MemoryDrawing::RENDERING_JPEG);
|
$drawing->setRenderingFunction(MemoryDrawing::RENDERING_JPEG);
|
||||||
$drawing->setMimeType(MemoryDrawing::MIMETYPE_JPEG);
|
$drawing->setMimeType(MemoryDrawing::MIMETYPE_JPEG);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case BSE::BLIPTYPE_PNG:
|
case BSE::BLIPTYPE_PNG:
|
||||||
$drawing->setRenderingFunction(MemoryDrawing::RENDERING_PNG);
|
imagealphablending($ih, false);
|
||||||
$drawing->setMimeType(MemoryDrawing::MIMETYPE_PNG);
|
imagesavealpha($ih, true);
|
||||||
|
$drawing->setRenderingFunction(MemoryDrawing::RENDERING_PNG);
|
||||||
|
$drawing->setMimeType(MemoryDrawing::MIMETYPE_PNG);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$drawing->setWorksheet($this->phpSheet);
|
||||||
|
$drawing->setCoordinates($spContainer->getStartCoordinates());
|
||||||
}
|
}
|
||||||
|
|
||||||
$drawing->setWorksheet($this->phpSheet);
|
|
||||||
$drawing->setCoordinates($spContainer->getStartCoordinates());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue