Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
dart_pdf
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Tomasz Gucio
2023-05-03 10:40:25 +0200
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
David PHAM-VAN
2023-05-03 07:42:08 -0300
Commit
2a27968b11676af9c78e828515e71ae4b46e4a21
2a27968b
1 parent
ba19b97f
Fix PdfImage constructor without alpha channel
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
105 additions
and
4 deletions
pdf/CHANGELOG.md
pdf/lib/src/pdf/obj/image.dart
pdf/test/image_test.dart
pdf/CHANGELOG.md
View file @
2a27968
...
...
@@ -10,6 +10,7 @@
-
Allow saving an unmodified document
-
Table cell: dynamic widget
[
Shahriyar Aghajani
]
-
Move Table.fromTextArray to TableHelper.fromTextArray
-
Fix PdfImage constructor without alpha channel
[
Tomasz Gucio
]
## 3.10.1
...
...
pdf/lib/src/pdf/obj/image.dart
View file @
2a27968
...
...
@@ -97,10 +97,18 @@ class PdfImage extends PdfXObject {
final
h
=
height
;
final
s
=
w
*
h
;
final
out
=
Uint8List
(
s
*
3
);
for
(
var
i
=
0
;
i
<
s
;
i
++)
{
out
[
i
*
3
]
=
image
[
i
*
4
];
out
[
i
*
3
+
1
]
=
image
[
i
*
4
+
1
];
out
[
i
*
3
+
2
]
=
image
[
i
*
4
+
2
];
if
(
alpha
)
{
for
(
var
i
=
0
;
i
<
s
;
i
++)
{
out
[
i
*
3
]
=
image
[
i
*
4
];
out
[
i
*
3
+
1
]
=
image
[
i
*
4
+
1
];
out
[
i
*
3
+
2
]
=
image
[
i
*
4
+
2
];
}
}
else
{
for
(
var
i
=
0
;
i
<
s
;
i
++)
{
out
[
i
*
3
]
=
image
[
i
*
3
];
out
[
i
*
3
+
1
]
=
image
[
i
*
3
+
1
];
out
[
i
*
3
+
2
]
=
image
[
i
*
3
+
2
];
}
}
im
.
buf
.
putBytes
(
out
);
...
...
pdf/test/image_test.dart
0 → 100644
View file @
2a27968
/*
* Copyright (C) 2017, David PHAM-VAN <dev.nfet.net@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import
'dart:typed_data'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/src/priv.dart'
;
import
'package:test/test.dart'
;
const
kRedValue
=
110
;
const
kGreenValue
=
120
;
const
kBlueValue
=
130
;
const
kAlphaValue
=
200
;
Uint8List
createTestImage
(
int
width
,
int
height
,
{
bool
withAlpha
=
true
})
{
final
channelCount
=
withAlpha
?
4
:
3
;
final
img
=
Uint8List
(
width
*
height
*
channelCount
);
for
(
var
pixelIndex
=
0
;
pixelIndex
<
width
*
height
;
pixelIndex
++)
{
img
[
pixelIndex
*
channelCount
]
=
kRedValue
;
img
[
pixelIndex
*
channelCount
+
1
]
=
kGreenValue
;
img
[
pixelIndex
*
channelCount
+
2
]
=
kBlueValue
;
if
(
channelCount
==
4
)
{
img
[
pixelIndex
*
channelCount
+
3
]
=
kAlphaValue
;
}
}
return
img
;
}
void
main
(
)
{
test
(
'PdfImage constructor with alpha channel'
,
()
async
{
final
img
=
createTestImage
(
300
,
200
);
final
pdf
=
PdfDocument
();
final
image
=
PdfImage
(
pdf
,
image:
img
.
buffer
.
asUint8List
(),
width:
300
,
height:
200
,
);
expect
(
image
.
params
[
'/Width'
],
const
PdfNum
(
300
));
expect
(
image
.
params
[
'/Height'
],
const
PdfNum
(
200
));
expect
(
image
.
params
[
'/SMask'
],
isA
<
PdfIndirect
>());
final
buf
=
image
.
buf
.
output
();
for
(
var
pixelIndex
=
0
;
pixelIndex
<
300
*
200
;
pixelIndex
++)
{
expect
(
buf
[
pixelIndex
*
3
],
kRedValue
);
expect
(
buf
[
pixelIndex
*
3
+
1
],
kGreenValue
);
expect
(
buf
[
pixelIndex
*
3
+
2
],
kBlueValue
);
}
});
test
(
'PdfImage constructor without alpha channel'
,
()
async
{
final
img
=
createTestImage
(
300
,
200
,
withAlpha:
false
);
final
pdf
=
PdfDocument
();
final
image
=
PdfImage
(
pdf
,
image:
img
.
buffer
.
asUint8List
(),
width:
300
,
height:
200
,
alpha:
false
,
);
expect
(
image
.
params
[
'/Width'
],
const
PdfNum
(
300
));
expect
(
image
.
params
[
'/Height'
],
const
PdfNum
(
200
));
expect
(
image
.
params
[
'/SMask'
],
isNull
);
final
buf
=
image
.
buf
.
output
();
for
(
var
pixelIndex
=
0
;
pixelIndex
<
300
*
200
;
pixelIndex
++)
{
expect
(
buf
[
pixelIndex
*
3
],
kRedValue
);
expect
(
buf
[
pixelIndex
*
3
+
1
],
kGreenValue
);
expect
(
buf
[
pixelIndex
*
3
+
2
],
kBlueValue
);
}
});
}
...
...
Please
register
or
login
to post a comment