投稿者 allgreen  (社会人) 投稿日時 2020/6/4 10:59:41
ちょっとまた、面倒なところで行き詰まりました
マルチtifのファイルを、これまで
マルチ画像 = System.Drawing.Image.FromFile(.FileName)
Dim fd As New System.Drawing.Imaging.FrameDimension(マルチ画像.FrameDimensionsList(0))
ページ数 = マルチ画像.GetFrameCount(fd)
ReDim 分割画像(ページ数 - 1)
For i = 0 To ページ数 - 1
     マルチ画像.SelectActiveFrame(fd, i)
     分割画像(i) = マルチ画像.Clone
Next
でやってましたが、この方法だとファイルをロックした状態が終了まで続いて
上書き保存などをするときに書き込めないことになり
ホームページなどを見て
FromFile のところを 
Dim ストリーム As New System.IO.FileStream(.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read)
マルチ画像 = System.Drawing.Image.FromStream(ストリーム)
に変えることにしました

すると、
g.drawimage などで、GDI+ で汎用エラーが発生しました。のエラーが出るようになりました
.clone を外すとエラーにはなりません(ただし分割画像が全部最後の画像になる)
可能性を考えて、Ctype(マルチ画像.Clone,image)としても駄目でした

ただし、必ずエラーになるというわけではなく、エラーにならない画像ファイルもあります
(今の所、縦長の画像はエラーにならず、横長の画像がエラーになる)

.clone を使わずに、マルチ画像を、分割画像(i)に分離する方法がないか
FileFrom ではエラーにならないのに、FileStream ではエラーになる理由は何か

何かありましたら、お願いします