mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-11 05:07:00 -04:00
fix bug with image decoding
This commit is contained in:
@@ -242,39 +242,45 @@ bool CardListBase::doBulkModification() {
|
||||
return false;
|
||||
}
|
||||
|
||||
void CardListBase::parseImageMetadata(CardP& card, const Image& image)
|
||||
{
|
||||
void CardListBase::parseImageMetadata(CardP& card, const Image& image) {
|
||||
for (IndexMap<FieldP, ValueP>::iterator it = card->data.begin(); it != card->data.end(); it++) {
|
||||
ImageValue* value = dynamic_cast<ImageValue*>(it->get());
|
||||
if (value && !value->filename.empty()) {
|
||||
RealRect rect(0.0, 0.0, 0.0, 0.0);
|
||||
int degrees = 0;
|
||||
decodeRectFromString(value->filename.toStringForKey(), rect, degrees);
|
||||
rect = rect.intersect(RealRect(0.0, 0.0, image.GetWidth(), image.GetHeight()));
|
||||
if (rect.width > 0.0 && rect.height > 0.0) {
|
||||
Image img = image.GetSubImage(rect);
|
||||
img = rotate_image(img, deg_to_rad(360 - degrees));
|
||||
LocalFileName filename = set->newFileName("cropped_image", _(".png")); // a new unique name in the package
|
||||
img.SaveFile(set->nameOut(filename), wxBITMAP_TYPE_PNG);
|
||||
value->filename = filename;
|
||||
}
|
||||
else {
|
||||
value->filename = LocalFileName();
|
||||
if (decodeRectFromString(value->filename.toStringForKey(), rect, degrees)) {
|
||||
rect = rect.intersect(RealRect(0.0, 0.0, image.GetWidth(), image.GetHeight()));
|
||||
if (rect.width > 0.0 && rect.height > 0.0) {
|
||||
Image img = image.GetSubImage(rect);
|
||||
img = rotate_image(img, deg_to_rad(360 - degrees));
|
||||
LocalFileName filename = set->newFileName(_("cropped_image"), _(".png")); // a new unique name in the package
|
||||
img.SaveFile(set->nameOut(filename), wxBITMAP_TYPE_PNG);
|
||||
value->filename = filename;
|
||||
}
|
||||
else {
|
||||
value->filename = LocalFileName();
|
||||
//queue_message(MESSAGE_WARNING, _("failed to recover image crop for card '") + card->identification() + _("'"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CardListBase::parseImageMetadata(CardP& card)
|
||||
{
|
||||
void CardListBase::parseImageMetadata(CardP& card) {
|
||||
for (IndexMap<FieldP, ValueP>::iterator it = card->data.begin(); it != card->data.end(); it++) {
|
||||
ImageValue* value = dynamic_cast<ImageValue*>(it->get());
|
||||
if (value) {
|
||||
Image img = decodeImageFromString(value->filename.toStringForKey());
|
||||
if (img.IsOk()) {
|
||||
LocalFileName filename = set->newFileName(_("decoded_image"), _(".png")); // a new unique name in the package
|
||||
img.SaveFile(set->nameOut(filename), wxBITMAP_TYPE_PNG);
|
||||
value->filename = filename;
|
||||
if (value && !value->filename.empty()) {
|
||||
Image img;
|
||||
if (decodeImageFromString(value->filename.toStringForKey(), img)) {
|
||||
if (img.IsOk()) {
|
||||
LocalFileName filename = set->newFileName(_("decoded_image"), _(".png")); // a new unique name in the package
|
||||
img.SaveFile(set->nameOut(filename), wxBITMAP_TYPE_PNG);
|
||||
value->filename = filename;
|
||||
}
|
||||
else {
|
||||
value->filename = LocalFileName();
|
||||
//queue_message(MESSAGE_WARNING, _("failed to recover image encode for card '") + card->identification() + _("'"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user