I have a problem identifying some broken images, running e-clasified website where users upload thousands images per day, some images looks like that Broken image
It's clearly broken. BUT - neither identify neither jpeginfo sees nothing wrong. I've googled all possible ways to check those images, tried them all but with no success.
I've tried to run jpegdump on that file but it shows nothing wrong (the output is almost the same for broken and non broken images):
jpegdump < 1.jpg
Offset 0x0000 Marker 0xffd8 SOI Start of Image
Offset 0x0002 Marker 0xffdb DQT Define Quantization Table(s) length variable 0x43
JPEG_DQT_Parameters:
QuantizationTableElementPrecision = 0
QuantizationTableIdentifier = 0
QuantizationTableElement 0 = 8
QuantizationTableElement 1 = 6
QuantizationTableElement 2 = 6
QuantizationTableElement 3 = 7
QuantizationTableElement 4 = 6
QuantizationTableElement 5 = 5
QuantizationTableElement 6 = 8
QuantizationTableElement 7 = 7
QuantizationTableElement 8 = 7
QuantizationTableElement 9 = 7
QuantizationTableElement 10 = 9
QuantizationTableElement 11 = 9
QuantizationTableElement 12 = 8
QuantizationTableElement 13 = 10
QuantizationTableElement 14 = 12
QuantizationTableElement 15 = 20
QuantizationTableElement 16 = 13
QuantizationTableElement 17 = 12
QuantizationTableElement 18 = 11
QuantizationTableElement 19 = 11
QuantizationTableElement 20 = 12
QuantizationTableElement 21 = 25
QuantizationTableElement 22 = 18
QuantizationTableElement 23 = 19
QuantizationTableElement 24 = 15
QuantizationTableElement 25 = 20
QuantizationTableElement 26 = 29
QuantizationTableElement 27 = 26
QuantizationTableElement 28 = 31
QuantizationTableElement 29 = 30
QuantizationTableElement 30 = 29
QuantizationTableElement 31 = 26
QuantizationTableElement 32 = 28
QuantizationTableElement 33 = 28
QuantizationTableElement 34 = 32
QuantizationTableElement 35 = 36
QuantizationTableElement 36 = 46
QuantizationTableElement 37 = 39
QuantizationTableElement 38 = 32
QuantizationTableElement 39 = 34
QuantizationTableElement 40 = 44
QuantizationTableElement 41 = 35
QuantizationTableElement 42 = 28
QuantizationTableElement 43 = 28
QuantizationTableElement 44 = 40
QuantizationTableElement 45 = 55
QuantizationTableElement 46 = 41
QuantizationTableElement 47 = 44
QuantizationTableElement 48 = 48
QuantizationTableElement 49 = 49
QuantizationTableElement 50 = 52
QuantizationTableElement 51 = 52
QuantizationTableElement 52 = 52
QuantizationTableElement 53 = 31
QuantizationTableElement 54 = 39
QuantizationTableElement 55 = 57
QuantizationTableElement 56 = 61
QuantizationTableElement 57 = 56
QuantizationTableElement 58 = 50
QuantizationTableElement 59 = 60
QuantizationTableElement 60 = 46
QuantizationTableElement 61 = 51
QuantizationTableElement 62 = 52
QuantizationTableElement 63 = 50
Offset 0x0047 Marker 0xffdb DQT Define Quantization Table(s) length variable 0x43
JPEG_DQT_Parameters:
QuantizationTableElementPrecision = 0
QuantizationTableIdentifier = 1
QuantizationTableElement 0 = 9
QuantizationTableElement 1 = 9
QuantizationTableElement 2 = 9
QuantizationTableElement 3 = 12
QuantizationTableElement 4 = 11
QuantizationTableElement 5 = 12
QuantizationTableElement 6 = 24
QuantizationTableElement 7 = 13
QuantizationTableElement 8 = 13
QuantizationTableElement 9 = 24
QuantizationTableElement 10 = 50
QuantizationTableElement 11 = 33
QuantizationTableElement 12 = 28
QuantizationTableElement 13 = 33
QuantizationTableElement 14 = 50
QuantizationTableElement 15 = 50
QuantizationTableElement 16 = 50
QuantizationTableElement 17 = 50
QuantizationTableElement 18 = 50
QuantizationTableElement 19 = 50
QuantizationTableElement 20 = 50
QuantizationTableElement 21 = 50
QuantizationTableElement 22 = 50
QuantizationTableElement 23 = 50
QuantizationTableElement 24 = 50
QuantizationTableElement 25 = 50
QuantizationTableElement 26 = 50
QuantizationTableElement 27 = 50
QuantizationTableElement 28 = 50
QuantizationTableElement 29 = 50
QuantizationTableElement 30 = 50
QuantizationTableElement 31 = 50
QuantizationTableElement 32 = 50
QuantizationTableElement 33 = 50
QuantizationTableElement 34 = 50
QuantizationTableElement 35 = 50
QuantizationTableElement 36 = 50
QuantizationTableElement 37 = 50
QuantizationTableElement 38 = 50
QuantizationTableElement 39 = 50
QuantizationTableElement 40 = 50
QuantizationTableElement 41 = 50
QuantizationTableElement 42 = 50
QuantizationTableElement 43 = 50
QuantizationTableElement 44 = 50
QuantizationTableElement 45 = 50
QuantizationTableElement 46 = 50
QuantizationTableElement 47 = 50
QuantizationTableElement 48 = 50
QuantizationTableElement 49 = 50
QuantizationTableElement 50 = 50
QuantizationTableElement 51 = 50
QuantizationTableElement 52 = 50
QuantizationTableElement 53 = 50
QuantizationTableElement 54 = 50
QuantizationTableElement 55 = 50
QuantizationTableElement 56 = 50
QuantizationTableElement 57 = 50
QuantizationTableElement 58 = 50
QuantizationTableElement 59 = 50
QuantizationTableElement 60 = 50
QuantizationTableElement 61 = 50
QuantizationTableElement 62 = 50
QuantizationTableElement 63 = 50
Offset 0x008c Marker 0xffc0 SOF0 Huffman Baseline DCT length variable 0x11
JPEG_SOF_Parameters:
SamplePrecision = 8
nLines = 800
nSamplesPerLine = 450
nComponentsInFrame = 3
component 0
ComponentIdentifier = 1
HorizontalSamplingFactor = 2
VerticalSamplingFactor = 2
QuantizationTableDestinationSelector = 0
component 1
ComponentIdentifier = 2
HorizontalSamplingFactor = 1
VerticalSamplingFactor = 1
QuantizationTableDestinationSelector = 1
component 2
ComponentIdentifier = 3
HorizontalSamplingFactor = 1
VerticalSamplingFactor = 1
QuantizationTableDestinationSelector = 1
Offset 0x009f Marker 0xffc4 DHT Define Huffman Table(s) length variable 0x1c
JPEG_DHT_Parameters:
TableClass = 0
HuffmanTableIdentifier = 0
nHuffmanCodesOfLength 0 = 1
ValueOfHuffmanCode 0 = 0
nHuffmanCodesOfLength 1 = 0
nHuffmanCodesOfLength 2 = 2
ValueOfHuffmanCode 0 = 3
ValueOfHuffmanCode 1 = 4
nHuffmanCodesOfLength 3 = 3
ValueOfHuffmanCode 0 = 1
ValueOfHuffmanCode 1 = 2
ValueOfHuffmanCode 2 = 5
nHuffmanCodesOfLength 4 = 1
ValueOfHuffmanCode 0 = 8
nHuffmanCodesOfLength 5 = 1
ValueOfHuffmanCode 0 = 6
nHuffmanCodesOfLength 6 = 1
ValueOfHuffmanCode 0 = 7
nHuffmanCodesOfLength 7 = 0
nHuffmanCodesOfLength 8 = 0
nHuffmanCodesOfLength 9 = 0
nHuffmanCodesOfLength 10 = 0
nHuffmanCodesOfLength 11 = 0
nHuffmanCodesOfLength 12 = 0
nHuffmanCodesOfLength 13 = 0
nHuffmanCodesOfLength 14 = 0
nHuffmanCodesOfLength 15 = 0
Offset 0x00bd Marker 0xffc4 DHT Define Huffman Table(s) length variable 0x47
JPEG_DHT_Parameters:
TableClass = 1
HuffmanTableIdentifier = 0
nHuffmanCodesOfLength 0 = 1
ValueOfHuffmanCode 0 = 0
nHuffmanCodesOfLength 1 = 0
nHuffmanCodesOfLength 2 = 2
ValueOfHuffmanCode 0 = 1
ValueOfHuffmanCode 1 = 2
nHuffmanCodesOfLength 3 = 2
ValueOfHuffmanCode 0 = 3
ValueOfHuffmanCode 1 = 17
nHuffmanCodesOfLength 4 = 0
nHuffmanCodesOfLength 5 = 4
ValueOfHuffmanCode 0 = 4
ValueOfHuffmanCode 1 = 18
ValueOfHuffmanCode 2 = 33
ValueOfHuffmanCode 3 = 49
nHuffmanCodesOfLength 6 = 2
ValueOfHuffmanCode 0 = 5
ValueOfHuffmanCode 1 = 65
nHuffmanCodesOfLength 7 = 6
ValueOfHuffmanCode 0 = 19
ValueOfHuffmanCode 1 = 34
ValueOfHuffmanCode 2 = 81
ValueOfHuffmanCode 3 = 97
ValueOfHuffmanCode 4 = 129
ValueOfHuffmanCode 5 = 209
nHuffmanCodesOfLength 8 = 8
ValueOfHuffmanCode 0 = 20
ValueOfHuffmanCode 1 = 50
ValueOfHuffmanCode 2 = 113
ValueOfHuffmanCode 3 = 145
ValueOfHuffmanCode 4 = 147
ValueOfHuffmanCode 5 = 161
ValueOfHuffmanCode 6 = 193
ValueOfHuffmanCode 7 = 240
nHuffmanCodesOfLength 9 = 2
ValueOfHuffmanCode 0 = 66
ValueOfHuffmanCode 1 = 177
nHuffmanCodesOfLength 10 = 6
ValueOfHuffmanCode 0 = 6
ValueOfHuffmanCode 1 = 21
ValueOfHuffmanCode 2 = 35
ValueOfHuffmanCode 3 = 82
ValueOfHuffmanCode 4 = 225
ValueOfHuffmanCode 5 = 241
nHuffmanCodesOfLength 11 = 7
ValueOfHuffmanCode 0 = 36
ValueOfHuffmanCode 1 = 51
ValueOfHuffmanCode 2 = 52
ValueOfHuffmanCode 3 = 68
ValueOfHuffmanCode 4 = 98
ValueOfHuffmanCode 5 = 99
ValueOfHuffmanCode 6 = 115
nHuffmanCodesOfLength 12 = 7
ValueOfHuffmanCode 0 = 83
ValueOfHuffmanCode 1 = 84
ValueOfHuffmanCode 2 = 100
ValueOfHuffmanCode 3 = 131
ValueOfHuffmanCode 4 = 146
ValueOfHuffmanCode 5 = 148
ValueOfHuffmanCode 6 = 178
nHuffmanCodesOfLength 13 = 5
ValueOfHuffmanCode 0 = 37
ValueOfHuffmanCode 1 = 85
ValueOfHuffmanCode 2 = 130
ValueOfHuffmanCode 3 = 132
ValueOfHuffmanCode 4 = 210
nHuffmanCodesOfLength 14 = 0
nHuffmanCodesOfLength 15 = 0
Offset 0x0106 Marker 0xffc4 DHT Define Huffman Table(s) length variable 0x19
JPEG_DHT_Parameters:
TableClass = 0
HuffmanTableIdentifier = 1
nHuffmanCodesOfLength 0 = 1
ValueOfHuffmanCode 0 = 0
nHuffmanCodesOfLength 1 = 1
ValueOfHuffmanCode 0 = 2
nHuffmanCodesOfLength 2 = 1
ValueOfHuffmanCode 0 = 1
nHuffmanCodesOfLength 3 = 1
ValueOfHuffmanCode 0 = 3
nHuffmanCodesOfLength 4 = 1
ValueOfHuffmanCode 0 = 4
nHuffmanCodesOfLength 5 = 1
ValueOfHuffmanCode 0 = 5
nHuffmanCodesOfLength 6 = 0
nHuffmanCodesOfLength 7 = 0
nHuffmanCodesOfLength 8 = 0
nHuffmanCodesOfLength 9 = 0
nHuffmanCodesOfLength 10 = 0
nHuffmanCodesOfLength 11 = 0
nHuffmanCodesOfLength 12 = 0
nHuffmanCodesOfLength 13 = 0
nHuffmanCodesOfLength 14 = 0
nHuffmanCodesOfLength 15 = 0
Offset 0x0121 Marker 0xffc4 DHT Define Huffman Table(s) length variable 0x22
JPEG_DHT_Parameters:
TableClass = 1
HuffmanTableIdentifier = 1
nHuffmanCodesOfLength 0 = 1
ValueOfHuffmanCode 0 = 0
nHuffmanCodesOfLength 1 = 1
ValueOfHuffmanCode 0 = 1
nHuffmanCodesOfLength 2 = 0
nHuffmanCodesOfLength 3 = 2
ValueOfHuffmanCode 0 = 2
ValueOfHuffmanCode 1 = 17
nHuffmanCodesOfLength 4 = 2
ValueOfHuffmanCode 0 = 33
ValueOfHuffmanCode 1 = 49
nHuffmanCodesOfLength 5 = 3
ValueOfHuffmanCode 0 = 3
ValueOfHuffmanCode 1 = 18
ValueOfHuffmanCode 2 = 65
nHuffmanCodesOfLength 6 = 0
nHuffmanCodesOfLength 7 = 3
ValueOfHuffmanCode 0 = 19
ValueOfHuffmanCode 1 = 81
ValueOfHuffmanCode 2 = 97
nHuffmanCodesOfLength 8 = 1
ValueOfHuffmanCode 0 = 4
nHuffmanCodesOfLength 9 = 1
ValueOfHuffmanCode 0 = 34
nHuffmanCodesOfLength 10 = 1
ValueOfHuffmanCode 0 = 145
nHuffmanCodesOfLength 11 = 0
nHuffmanCodesOfLength 12 = 0
nHuffmanCodesOfLength 13 = 0
nHuffmanCodesOfLength 14 = 0
nHuffmanCodesOfLength 15 = 0
Offset 0x0145 Marker 0xffda SOS Start of Scan length variable 0x0c
JPEG_SOS_Parameters:
nComponentsPerScan = 3
component 0
ScanComponentSelector = 1
DCEntropyCodingTableSelector = 0
ACEntropyCodingTableSelector = 0
MappingTableSelector(LS) = 0
component 1
ScanComponentSelector = 2
DCEntropyCodingTableSelector = 1
ACEntropyCodingTableSelector = 1
MappingTableSelector(LS) = 17
component 2
ScanComponentSelector = 3
DCEntropyCodingTableSelector = 1
ACEntropyCodingTableSelector = 1
MappingTableSelector(LS) = 17
StartOfSpectralOrPredictorSelection/NearLosslessDifferenceBound(LS) = 0
EndOfSpectralSelection/InterleaveMode(LS) = 63
SuccessiveApproximationBitPositionHigh = 0
SuccessiveApproximationBitPositionLowOrPointTransform = 0
Offset 0x020d Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0230 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x02c9 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0306 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x030f Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0322 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0349 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0399 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x03a8 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0438 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x044b Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x045c Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0460 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0471 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0492 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x04da Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x04fb Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x052d Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0584 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x05a9 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x05ba Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x0a74 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x1271 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x132a Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x1344 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x15bc Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x179b Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x19e9 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x1d11 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x1dff Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x1e58 Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x1ecb Encoded 0xff in entropy-coded segment followed by stuffed zero byte
Offset 0x261d Marker 0xffd9 EOI End of Image (JPEG 2000 EOC End of codestream)
End of file
Do you have some ideas how can I detect those images?
Thanks in advance!