mirror of
https://github.com/SFML/SFML.git
synced 2024-12-01 15:51:04 +08:00
Fixed image file extension detection
Previously this would fail on `jpeg` and would detect something such as `notajpg` as `jpg`. This fixes #929.
This commit is contained in:
parent
fa1bc737d5
commit
df99d5fee2
@ -227,35 +227,34 @@ bool ImageLoader::saveImageToFile(const std::string& filename, const std::vector
|
|||||||
if (!pixels.empty() && (size.x > 0) && (size.y > 0))
|
if (!pixels.empty() && (size.x > 0) && (size.y > 0))
|
||||||
{
|
{
|
||||||
// Deduce the image type from its extension
|
// Deduce the image type from its extension
|
||||||
if (filename.size() > 3)
|
|
||||||
{
|
|
||||||
// Extract the extension
|
|
||||||
std::string extension = toLower(filename.substr(filename.size() - 3));
|
|
||||||
|
|
||||||
if (extension == "bmp")
|
// Extract the extension
|
||||||
{
|
const std::size_t dot = filename.find_last_of('.');
|
||||||
// BMP format
|
const std::string extension = dot != std::string::npos ? toLower(filename.substr(dot + 1)) : "";
|
||||||
if (stbi_write_bmp(filename.c_str(), size.x, size.y, 4, &pixels[0]))
|
|
||||||
return true;
|
if (extension == "bmp")
|
||||||
}
|
{
|
||||||
else if (extension == "tga")
|
// BMP format
|
||||||
{
|
if (stbi_write_bmp(filename.c_str(), size.x, size.y, 4, &pixels[0]))
|
||||||
// TGA format
|
return true;
|
||||||
if (stbi_write_tga(filename.c_str(), size.x, size.y, 4, &pixels[0]))
|
}
|
||||||
return true;
|
else if (extension == "tga")
|
||||||
}
|
{
|
||||||
else if (extension == "png")
|
// TGA format
|
||||||
{
|
if (stbi_write_tga(filename.c_str(), size.x, size.y, 4, &pixels[0]))
|
||||||
// PNG format
|
return true;
|
||||||
if (stbi_write_png(filename.c_str(), size.x, size.y, 4, &pixels[0], 0))
|
}
|
||||||
return true;
|
else if (extension == "png")
|
||||||
}
|
{
|
||||||
else if (extension == "jpg")
|
// PNG format
|
||||||
{
|
if (stbi_write_png(filename.c_str(), size.x, size.y, 4, &pixels[0], 0))
|
||||||
// JPG format
|
return true;
|
||||||
if (writeJpg(filename, pixels, size.x, size.y))
|
}
|
||||||
return true;
|
else if (extension == "jpg" || extension == "jpeg")
|
||||||
}
|
{
|
||||||
|
// JPG format
|
||||||
|
if (writeJpg(filename, pixels, size.x, size.y))
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user