"OSError: cannot identify image file" opening image with PIL/Image - python

I am trying to get some code working that has broken but was working before. I have a PNG file on my desktop and I simply want to open it using the Image module from PIL.
from PIL import Image
img_dir = r'C:\Users\DylanDB\Desktop\square.png'
img = Image.open(img_dir)
This is a remake of my more advanced code that it happens in as well. The error is:
Traceback (most recent call last):
File "C:/Users/DylanDB/Desktop/img_test.py", line 5, in <module>
img = Image.open(img_dir)
File "C:\Python34\lib\site-packages\PIL\Image.py", line 2317, in open
% (filename if filename else fp))
OSError: cannot identify image file 'C:\\Users\\DylanDB\\Desktop\\square.png'

I had the same error and it was due to the file was recently created and not closed properly before opening with the Image.open(). After closing the file f.close() it werked as expect

I found that the file was a corrupted image.

Related

Python IOError: [Errno 2] No such file or directory:

I am just trying to open an image, I know there are several IOError questions on here, but I have not been able to understand the explanations.
The code i typed is here
from PIL import Image
image = Image.open("Lenna.png")
image.load()
The error obtained is as follows:
Traceback (most recent call last):
File "C:\Python27\hello world.py", line 4, in <module>
image = Image.open("Lenna.png")
File "C:\Python27\lib\site-packages\PIL\Image.py", line 1952, in open
fp = __builtin__.open(fp, "rb")
IOError: [Errno 2] No such file or directory: 'Lenna.png'
What do I do here?
Thank you.
You are trying to use relative filename. Python can't find such file in current work dir. Try to use full absolute path such as 'C:\Lenna.png'.
IOError: [Errno 2] No such file or directory: 'Lenna.png'
check path of the file
If you are trying to open image, either you have to specify the complete path of the image like,
from PIL import Image
im = Image.open('C:/Users/Anish/Desktop/2017PROJECTS/PYTHON_TWITTER/image/camel.png')
im.show()
Or you have to copy the image to the specified project directory and call the image name like,
im = Image.open('camel.png')

Python converting pdf to image?

So I'm using Wand to try to convert the pdf to an image
from wand.image import Image
with Image(filename="test.pdf") as img:
img.save(filename="/temp.jpg")
with Image(filename="test.jpg") as img:
img.resize(200, 150)
img.save(filename="t.jpg")
but for some reason i get:
Traceback (most recent call last):
File "C:\Users\Rafael\Desktop\k\pdf to image.py", line 3, in <module>
with Image(filename="test.pdf") as img:
File "C:\Python27\lib\site-packages\wand\image.py", line 2534, in __init__
self.read(filename=filename, resolution=resolution)
File "C:\Python27\lib\site-packages\wand\image.py", line 2601, in read
self.raise_exception()
File "C:\Python27\lib\site-packages\wand\resource.py", line 222, in raise_exception
raise e
DelegateError: PDFDelegateFailed `The system cannot find the file specified.
' # error/pdf.c/ReadPDFImage/798
Can i do something or is there another way to convert a pdf to an image?
Installing Ghostscript and adding
C:\Program Files (x86)\gs\gs9.06\bin
to your systempath should help to resolve this issue as it helped me to overcome this error....
The reason may be a missing ghostscript installation. This is a similar question on SO
There is another way. Looks like you are using windows so you need download "https://github.com/oschwartz10612/poppler-windows/releases/"
Because you are using Windows,so you need to state the path to poppler/bin folder:
code:
from pdf2image import convert_from_path
poppler_path = "C:\path\to\poppler\bin"
images = convert_from_path('example.pdf')
for i in range(len(images)):
images[i].save('page'+ str(i) +'.jpg', 'JPEG')
reference : https://www.geeksforgeeks.org/convert-pdf-to-image-using-python/

Open process and save specific images in related folder

I'm looking for a way to open and crop several tiff images and then save the new croped images created in the same folder (related to my script folder).
My current code looks like this:
from PIL import Image
import os,platform
filespath = os.path.join(os.environ['USERPROFILE'],"Desktop\Python\originalImagesfolder")
for file in os.listdir(filespath):
if file.endswith(".tif"):
im = Image.open(file)
im.crop((3000, 6600, 3700, 6750)).save(file+"_crop.tif")
This script is returning me the error:
Traceback (most recent call last):
File "C:\Users...\Desktop\Python\script.py", line 22, in
im = Image.open(file)
File "C:\Python34\lib\site-packages\PIL\Image.py", line 2219, in open
fp = builtins.open(fp, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'Image1Name.tif'
'Image1Name.tif' is the first tif image I'm trying to process in the folder. I don't get how the script can give the file's name without being able to find it. Any Help?
PS: I have 2 days experience in python and codes generaly speaking. Sorry if the answer is obvious
[EDIT/Update]
After modifying my initial code thanks to vttran and ChrisGuest answers, turning then into this:
from PIL import Image
import os,platform
filespath = os.path.join(os.environ['USERPROFILE'],"Desktop\Python\originalImagesfolder")
for file in os.listdir(filespath):
if file.endswith(".tif"):
filepath = os.path.join(filespath, file)
im = Image.open(filepath)
im.crop((3000, 6600, 3700, 6750)).save("crop"+file)
the script is returning me a new error message:
Traceback (most recent call last):
File "C:/Users/.../Desktop/Python/script.py", line 11, in
im.crop((3000, 6600, 3700, 6750)).save("crop"+file)
File "C:\Python34\lib\site-packages\PIL\Image.py", line 986, in crop
self.load()
File "C:\Python34\lib\site-packages\PIL\ImageFile.py", line 166, in load
self.load_prepare()
File "C:\Python34\lib\site-packages\PIL\ImageFile.py", line 250, in
load_prepare
self.im = Image.core.new(self.mode, self.size) ValueError: unrecognized mode
A maybe-useful information, it's a Landsat8 image in GeoTiff format. The TIFF file therefore include geoposition, projection... informations. The script works perfectly fine if I first open and re-save them with a software like Photoshop (16int tiff format).
When you are search for the file names you use filespath to specify the directory.
But then when you open the file, you are only using the base filename.
So you could replace
im = Image.open(file)
with
filepath = os.path.join(filespath, file)
im = Image.open(filepath)
Also consider using the glob module, as you can do glob.glob(r'path\*.tif) .
It is also good practice to avoid using builtin functions like file as variable names.

Using PIL modifying and then saving a TIFF returns error

TLDR; I'm trying to take a TIFF, resize it, then save it. However it returns an error. This works fine if I change the saved filetype to png or jpg.
System: Windows 7
Tried using both Python 3.4 and 2.7.
Code:
from PIL import Image
try: #test file exists
im = Image.open(r"c:\temp\file.tif")
except:
print("Error opening image")
multiply = 5 #how much bigger
processing = tuple([multiply*x for x in im.size]) #maths
saved = (r"c:\temp\biggerfile.tif") #save location
imB = im.resize((processing)) #resizing
imB.save(saved) #saving
I need to resize a TIFF because I'm using tesseract-ocr, and resizing the image to get a better output. The program seems to work best with a TIFF.
The error I receive is:
_TIFFVSetField: c:\temp\biggerfile.tif: Bad value 2 for "ExtraSamples" tag.
Traceback (most recent call last):
File "step1.py", line 15, in <module>
imB.save(saved)
File "C:\Python34\lib\site-packages\PIL\Image.py", line 1684, in save
save_handler(self, fp, filename)
File "C:\Python34\lib\site-packages\PIL\TiffImagePlugin.py", line 1185, in _save
e = Image._getencoder(im.mode, 'libtiff', a, im.encoderconfig)
File "C:\Python34\lib\site-packages\PIL\Image.py", line 430, in _getencoder
return encoder(mode, *args + extra)
RuntimeError: Error setting from dictionary
Thanks!
Try to install libtiff
http://gnuwin32.sourceforge.net/packages/tiff.htm
File "C:\Python34\lib\site-packages\PIL\TiffImagePlugin.py", line 1185, in _save
e = Image._getencoder(im.mode, 'libtiff', a, im.encoderconfig)
Looks like that's the error that is holding you up. It's trying to access libtiff and you don't have it installed so it's failing.
Had the same issue, when using PIL to combine multiple images to one and adding a label.
I could fix this easily by converting the .tif file to a .png file in MS Paint (pls don't hate me for using MS :D). Quality of the final merged image was not reduced.

Pillow keeps throwing cannot identify image file on Window in Python2.7.6

I'm using Python2.7.6 and Pillow 2.3.0 on 32 bits Windows. And I do not have PIL installed on my machine.
My problem is when I do following I get "cannot identify image file" error.
>>> from PIL import Image
>>> file = open(r"C:\\a.jpg", 'r')
>>> image = Image.open(file)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pillow-2.3.0-py2.7-win32.egg\PIL\Image.py", line 2025, in open
IOError: cannot identify image file
But this works if I don't "Open" the file before opening it with Image.Open:
>>> image2 = Image.open(r"C:\\a.jpg", 'r')
NOTE: I cannot omit the "Open" statement.
Does anyone know what may be causing this strange behavior?
Thanks, in advance!
Don't do image = Image.open(file) , you already opened the file.
Try image = Image.open("C:\\a.jpg")
Here is the Image module: http://effbot.org/imagingbook/image.htm
EDIT:
Use 'rb' instea of 'r' when opening the file

Categories

Resources